Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tsconfig not found when extends scope with ts-node>10.0 and typescript@>=5.3.0-dev #2076

Closed
bluelovers opened this issue Oct 10, 2023 · 16 comments · Fixed by #2091
Closed

tsconfig not found when extends scope with ts-node>10.0 and typescript@>=5.3.0-dev #2076

bluelovers opened this issue Oct 10, 2023 · 16 comments · Fixed by #2091

Comments

@bluelovers
Copy link
Contributor

bluelovers commented Oct 10, 2023

Search Terms

not found tsconfig

Expected Behavior

no error like [email protected]

Actual Behavior

    return new TSError(diagnosticText, diagnosticCodes, diagnostics);
           ^
TSError: ⨯ Unable to compile TypeScript:
error TS6053: File '@bluelovers/tsconfig/esm/mapfile.json' not found.

    at createTSError (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:859:12)
    at reportTSError (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:863:19)
    at createFromPreloadedConfig (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:874:36)
    at phase4 (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\bin.ts:543:44)
    at bootstrap (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\bin.ts:95:10)
    at main (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\bin.ts:55:10)
    at Object.<anonymous> (C:\Users\User\AppData\Roaming\npm\node_modules\ts-node\src\bin-cwd.ts:5:5)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32) {
  diagnosticCodes: [ 6053 ]
}

Steps to reproduce the problem

global install typescript>=5.3.0-dev
global/local install ts-node@>10.0

{
  "extends": "@bluelovers/tsconfig/esm/mapfile.json",
  "compilerOptions": {
    "disableReferencedProjectLoad": true,
    "importHelpers": true,
    "noPropertyAccessFromIndexSignature": false
  }
}

node_modules/ts-node/dist/configuration.js

 const resolvedExtendedConfigPath = tsInternals.getExtendsConfigPath(c.extends, {
                    fileExists,
                    readDirectory: ts.sys.readDirectory,
                    readFile,
                    useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
                    trace: tsTrace,
                }, bp, errors, ts.createCompilerDiagnostic);

Minimal reproduction

Specifications

  • ts-node version:
  • node version:
  • TypeScript version:
  • tsconfig.json, if you're using one:
{}
  • package.json:
{}
  • Operating system and version:
  • If Windows, are you using WSL or WSL2?:
@bluelovers bluelovers changed the title tsconfig not found when extends scope with ts-node>10.0 tsconfig not found when extends scope with ts-node>10.0 and typescript@>=5.3.0-dev Oct 10, 2023
@bluelovers
Copy link
Contributor Author

@dipunm
Copy link

dipunm commented Nov 20, 2023

I have ran into this issue with the latest release of [email protected] https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/

ts-node version: v10.9.1

Julien-R44 added a commit to adonisjs/web-starter-kit that referenced this issue Nov 21, 2023
Julien-R44 added a commit to adonisjs/slim-starter-kit that referenced this issue Nov 21, 2023
@Azerothian
Copy link

Azerothian commented Nov 21, 2023

5.3.2 just went live 8 hours ago and i got the similar error with extending @tsconfig/node18

TSError: ⨯ Unable to compile TypeScript:
error TS6053: File '@tsconfig/node18/tsconfig.json' not found.

    at createTSError (/home/dev/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/home/dev/node_modules/ts-node/src/index.ts:863:19)
    at createFromPreloadedConfig (/home/dev/node_modules/ts-node/src/index.ts:874:36)
    at create (/home/dev/node_modules/ts-node/src/index.ts:624:10)
    at Object.register (/home/dev/node_modules/ts-node/src/index.ts:591:15)
    at Object.<anonymous> (/home/dev/node_modules/ts-node/register/index.js:1:16)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Function.Module._load (node:internal/modules/cjs/loader:960:12) {
  diagnosticCodes: [ 6053 ]
}

tsconfig.json

{
  "extends": "@tsconfig/node18/tsconfig.json",
  "compilerOptions": {
    "experimentalDecorators": true,
    "removeComments": false,
    "preserveConstEnums": true,
  },
  "include": ["src/**/*", ".jest", "__tests__", "__tests__/.jest/*", "__tests__/utils/*"],
  "exclude": ["node_modules", "old"],
  "ts-node": {
    "files": true
  },
}

@edosrecki
Copy link
Contributor

I added reproduction with the latest 5.3.2 version of typescript: TypeStrong/ts-node-repros#36

@me4502
Copy link

me4502 commented Nov 22, 2023

This issue has also been reported to TypeScript it seems; microsoft/TypeScript#56492

@effektsvk
Copy link

Hello, yes, that is the same issue. I debugged the issue and posted the culprit there:
microsoft/TypeScript#56492 (comment)

@edosrecki
Copy link
Contributor

I guess we need to accommodate for this internal API change by providing different arguments based on the Typescript version being used.

I started the work here: #2091

@patozavala
Copy link

Hi all,

I modified the tsconfig.json's extends path as follows:
before:
"extends": "ts-node/node16/tsconfig.json",
after:
"extends": "./node_modules/@tsconfig/node16/tsconfig.json",

In my case I am using:

 "ts-node": "10.9.1",
 "typescript": "5.3.2"
 "pm2": "^5.3.0",

And it works

@effektsvk
Copy link

@patozavala yes, I can confirm this workaround, I found it as well but forgot to post 😅 sorry

@karlhorky
Copy link

This also affects Jest with TypeScript configuration files, because Jest uses ts-node by default

@karlhorky
Copy link

Workaround (apply patch before PR merged)

To apply the patch directly before #2091 is merged (eg. using patch-package or pnpm patch):

node_modules/ts-node/dist/ts-internals.js

    function getExtendsConfigPath(extendedConfig, host, basePath, errors, createDiagnostic) {
        extendedConfig = (0, util_1.normalizeSlashes)(extendedConfig);
        if (isRootedDiskPath(extendedConfig) ||
            startsWith(extendedConfig, './') ||
            startsWith(extendedConfig, '../')) {
            let extendedConfigPath = getNormalizedAbsolutePath(extendedConfig, basePath);
            if (!host.fileExists(extendedConfigPath) &&
                !endsWith(extendedConfigPath, ts.Extension.Json)) {
                extendedConfigPath = `${extendedConfigPath}.json`;
                if (!host.fileExists(extendedConfigPath)) {
                    errors.push(createDiagnostic(ts.Diagnostics.File_0_not_found, extendedConfig));
                    return undefined;
                }
            }
            return extendedConfigPath;
        }
        // If the path isn't a rooted or relative path, resolve like a module
        const resolved = ts.nodeModuleNameResolver(extendedConfig, combinePaths(basePath, 'tsconfig.json'), { moduleResolution: ts.ModuleResolutionKind.NodeJs }, host,
        /*cache*/ undefined,
        /*projectRefs*/ undefined,
+        /*conditionsOrIsConfigLookup*/ undefined,
        /*lookupConfig*/ true);
        if (resolved.resolvedModule) {
            return resolved.resolvedModule.resolvedFileName;
        }
        errors.push(createDiagnostic(ts.Diagnostics.File_0_not_found, extendedConfig));
        return undefined;
    }
    return { getExtendsConfigPath };
}

erkannt added a commit to PREreview/prereview.org that referenced this issue Nov 29, 2023
Josh-Cena added a commit to Josh-Cena/Josh-Cena.github.io that referenced this issue Dec 3, 2023
I couldn't bump TS because of TypeStrong/ts-node#2076

Couldn't bump react-helmet-async because the ESM SSR output doesn't run in Node anymore...
@adrian-gierakowski
Copy link

Could a new 11.beta release be cut with this fix included please? Thanks!

@AlessandroVol23
Copy link

AlessandroVol23 commented Apr 23, 2024

This also affects Jest with TypeScript configuration files, because Jest uses ts-node by default

I face this issue with jest right now. Is there any workaround or fix already available? I'm on the latest (29.7.0) jest version

@adrian-gierakowski
Copy link

for people using yarn (berry) you can use https://www.npmjs.com/package/ts-node/v/11.0.0-beta.1 with the following patch:

diff --git a/dist/ts-internals.js b/dist/ts-internals.js
index 2b303c90edf91dcc3bf9988586570b9988f05187..99ea07b39a0fb1801a3bdc7ee6234b5d0f432c3f 100644
--- a/dist/ts-internals.js
+++ b/dist/ts-internals.js
@@ -34,9 +34,10 @@ function createTsInternalsUncached(_ts) {
             return extendedConfigPath;
         }
         // If the path isn't a rooted or relative path, resolve like a module
-        const resolved = ts.nodeModuleNameResolver(extendedConfig, combinePaths(basePath, 'tsconfig.json'), { moduleResolution: ts.ModuleResolutionKind.NodeJs }, host, 
-        /*cache*/ undefined, 
-        /*projectRefs*/ undefined, 
+        const resolved = ts.nodeModuleNameResolver(extendedConfig, combinePaths(basePath, 'tsconfig.json'), { moduleResolution: ts.ModuleResolutionKind.NodeJs }, host,
+        /*cache*/ undefined,
+        /*projectRefs*/ undefined,
+        /*conditionsOrIsConfigLookup*/ undefined,
         /*lookupConfig*/ true);
         if (resolved.resolvedModule) {
             return resolved.resolvedModule.resolvedFileName;
``

@sethidden
Copy link

sethidden commented Apr 24, 2024

This was fixed for me by updating from ts-node 10.9.1 to 10.9.2 - just remove ts-node from your lockfile and run install again. I'm writing so people aren't confused - 10.9.2 was released after 11.0.0 beta, so this is probably why the above poster is patching.

@AlessandroVol23
Copy link

I got it fixed as well by overriding all peer dependencies and update ts-node to 10.9.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.