我正在尝试将我的 package.json 设置为模块运行 Node 14:
"type": "module",
如果我在 typescript 文件上运行此命令: node --loader ts-node/esm.mjs --experimental-top-level-await ./src/scripts/ts-build.ts --trace-warnings --experimental-json-modules
我在 typescript 文件中有这样的无扩展名导入import { logger } from './logger';
我明白了ERR_MODULE_NOT_FOUND
但是,如果我将其更改为
import { logger } from './logger.js';
有用。为什么是这样?
最佳答案
我通过 Node v14.15.0
上的这些实验性功能解决了它.
node --loader ts-node/esm --experimental-specifier-resolution=node your/entry.ts
但如果你只想要命令 node
, ts-node
或 webpack serve
要使用带有 import 语句的 typescript 条目文件(例如 server.ts 或 webpack.config.ts),您可以通过设置 compilerOptions
来解决此问题在 ts-node
下tsconfig.ts 中的选项。{
"ts-node": {
"compilerOptions": {
"module": "CommonJS"
}
},
"compilerOptions": {
"target": "ES6",
"module": "ES6",
"moduleResolution": "Node",
"esModuleInterop": true
},
"include": [
// below entries are just examples
"src/**/*",
"server.ts"
"webpack.config.ts"
]
}
关于javascript - 使用加载器 ts-node/esm.js 运行 Node 需要导入具有 .js 扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63807613/