zerkalica/zerollup

TypeError: Cannot read properties of undefined (reading 'impliedNodeFormat')

ZeeD opened this issue · 3 comments

ZeeD commented

Hi.
I'm working on a typescript project, and I'm using jest to run the tests.
I introduced ttypescript and ts-transform-paths but now I have a strange error: for each test I have an error with this message:

  ● Test suite failed to run

    TypeError: Cannot read properties of undefined (reading 'impliedNodeFormat')

      at Object.getModeForUsageLocation (node_modules/typescript/lib/typescript.js:114398:18)
      at resolveExternalModule (node_modules/typescript/lib/typescript.js:50141:90)
      at resolveExternalModuleNameWorker (node_modules/typescript/lib/typescript.js:50117:19)
      at getExternalModuleFileFromDeclaration (node_modules/typescript/lib/typescript.js:85790:32)
      at Object.getExternalModuleFileFromDeclaration (node_modules/typescript/lib/typescript.js:85629:36)
      at tryGetModuleNameFromDeclaration (node_modules/typescript/lib/typescript.js:29494:59)
      at Object.getExternalModuleNameLiteral (node_modules/typescript/lib/typescript.js:29458:20)
      at createRequireCall (node_modules/typescript/lib/typescript.js:103357:33)
      at visitImportDeclaration (node_modules/typescript/lib/typescript.js:103317:80)
      at topLevelVisitor (node_modules/typescript/lib/typescript.js:102966:28)

The error doesn't come up if I remove { "transform": "@zerollup/ts-transform-paths" } from compilerOptions.plugins

For reference this is the content of my tsconfig.json

{
    "compilerOptions": {
        "baseUrl": "src",
        "paths": {
            "@/*": ["*"],
            "@messages/*": ["messages/*"]
        },
        "module": "esnext",
        "declaration": true,
        "declarationMap": true,
        "downlevelIteration": true,
        "noImplicitAny": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "target": "es5",
        "noUnusedLocals": true,
        "skipLibCheck": true,
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "importHelpers": true,
        "esModuleInterop": true,
        "outDir": "./lib",
        "lib": ["dom", "es2017"],
        "experimentalDecorators": true,
        "plugins": [
            { "transform": "@zerollup/ts-transform-paths" },
            { "transform": "typescript-is/lib/transform-inline/transformer" }
        ]
    },
    "typedocOptions": {
        "entryPoints": ["src/index.ts", "src/config/index.ts", "src/errors/errors.ts"],
        "out": "docs",
        "theme": "markdown",
        "exclude": "src/messages",
        "entryPointStrategy": "resolve",
        "plugin": ["typedoc-plugin-markdown", "typedoc-plugin-merge-modules", "typedoc-plugin-rename-defaults"],
        "mergeModulesMergeMode": "module",
        "mergeModulesRenameDefaults": true,
        "includeVersion": true,
        "excludePrivate": true,
        "excludeNotDocumented": true,
        "readme": "none",
        "gitRevision": "main"
    },
    "include": ["src", "test"],
    "exclude": ["node_modules"]
}

and the jest.config.cjs

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
    globals: {
        'ts-jest': {
            compiler: 'ttypescript',
        },
    },
    preset: 'ts-jest',
    collectCoverageFrom: ['src/**', '!src/messages/**'],
    moduleNameMapper: {
        '^@/(.*)$': '<rootDir>/src/$1',
        '^@messages/(.*)$': '<rootDir>/src/messages/$1',
    },
    roots: ['src', 'test']
};

can you help me understanding what is going on?

alixq commented

We have the same issue when upgrading to the latest TS versions

I have tried different TS versions from 4.6 till 4.9 and have this issue with all of them

I switched to https://www.npmjs.com/package/typescript-transform-paths, just had to edit the "paths" tsconfig setting, otherwise works the same just replace this abandoned plugin with that one