发生背景
书接上回,在 CommonJS 中使用 ES Module 语法,ts-node 会报错 ERR_UNKNOWN_FILE_EXTENSION
时隔 9 个月,报错再次发生:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for ...\scripts\upload.ts
at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:160:9)
at defaultGetFormat (node:internal/modules/esm/get_format:203:36)
at defaultLoad (node:internal/modules/esm/load:141:22)
at async nextLoad (node:internal/modules/esm/hooks:865:22)
at async nextLoad (node:internal/modules/esm/hooks:865:22)
at async Hooks.load (node:internal/modules/esm/hooks:448:20)
at async MessagePort.handleMessage (node:internal/modules/esm/worker:196:18) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
相较于上次,这次的工具更新些:
- Node.js 20.10.0
- ts-node 10.9.2
- TypeScript 5.3.3
再三确认:
- 要运行的文件
scripts/upload.ts
存在 package.json
里有写"type": "module"
package.json
里有写"ts-node": { "esm": true }
(换用ts-node-esm
也会报错)
搞了一个星期