TypeStrong / ts-node

TypeScript execution and REPL for node.js
https://typestrong.org/ts-node
MIT License
12.75k stars 529 forks source link

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" #2122

Open luyifo opened 1 month ago

luyifo commented 1 month ago

Search Terms

When the node version is 18.20.0, running TS-node --esm **.ts displays TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts". Runs successfully after the Node version is reduced to 16.20.2.

PS D:\Testspace\ts-node-demo> pn dev

> ts-node-demo@1.0.0 dev D:\Testspace\ts-node-demo
> ts-node-esm src/index.ts

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for D:\Testspace\ts-node-demo\src\index.ts
    at new NodeError (node:internal/errors:405:5)
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:136:11)
    at defaultGetFormat (node:internal/modules/esm/get_format:182:36)
    at defaultLoad (node:internal/modules/esm/load:101:20)
    at nextLoad (node:internal/modules/esm/hooks:864:28)
    at load (D:\Testspace\ts-node-demo\node_modules\.pnpm\ts-node@10.9.2_@types+node@20.14.2_typescript@5.4.5\node_modules\ts-node\dist\child\child-loader.js:19:122)
    at nextLoad (node:internal/modules/esm/hooks:864:28)
    at Hooks.load (node:internal/modules/esm/hooks:447:26)
    at MessagePort.handleMessage (node:internal/modules/esm/worker:196:24)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:786:20) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
 ELIFECYCLE  Command failed with exit code 1.
PS D:\Testspace\ts-node-demo> nvm list

  * 18.20.0 (Currently using 64-bit executable)
    16.20.2
PS D:\Testspace\ts-node-demo> nvm use 16.20.2
Now using node v16.20.2 (64-bit)
PS D:\Testspace\ts-node-demo> pn dev

> ts-node-demo@1.0.0 dev D:\Testspace\ts-node-demo
> ts-node-esm src/index.ts

hello world
PS D:\Testspace\ts-node-demo> 

Expected Behavior

Actual Behavior

Steps to reproduce the problem

Minimal reproduction

Specifications

etulikov commented 1 month ago

I had the same issue, downgrade Node to 18.18 help. My engines:

"engines": {
    "node": ">=18.18.0 <18.19.0"
  },
EvilCodeMorty commented 1 week ago

Have you solved this problem?I switched the versions of 22,18 and 16 with different problems, and the configuration file has been modified, but it still doesn't work

EvilCodeMorty commented 1 week ago

"module": "CommonJS", "esModuleInterop": true,

EvilCodeMorty commented 1 week ago

My code compilation is no problem, I specially configured a file for "ts-node", code compilation is another file, anyway just to see the state of writing code, so I specially configured a file for "ts-node", compilation is another file;"tsconfig.dev.json"and"tsconfig.json"

EvilCodeMorty commented 1 week ago
"dev": "cross-env TS_NODE_PROJECT=tsconfig.dev.json nodemon --exec ts-node src/main.ts",
EvilCodeMorty commented 1 week ago
"dev": "cross-env TS_NODE_PROJECT=tsconfig.dev.json nodemon --exec ts-node src/main.ts",
lhapaipai commented 2 days ago

seems to work for me with node and --loader flag

{
  "scripts": {
-    "not-work": "ts-node-esm src/main.ts",
+    "dev": "node --loader ts-node/esm --no-warnings=ExperimentalWarning src/main.ts"
  }
}

node: v20.5.0 ts-node: v10.9.2

kyledetella commented 2 days ago

seems to work for me with node and --loader flag

{
  "scripts": {
-    "not-work": "ts-node-esm src/main.ts",
+    "dev": "node --loader ts-node/esm --no-warnings=ExperimentalWarning src/main.ts"
  }
}

node: v20.5.0 ts-node: v10.9.2

This worked for me. Thanks @lhapaipai