dag*_*da1 9 javascript node.js typescript es6-modules
我正在尝试将我的 package.json 设置为模块来运行节点 14:
"type": "module",
Run Code Online (Sandbox Code Playgroud)
如果我在打字稿文件上运行此命令:
node --loader ts-node/esm.mjs --experimental-top-level-await ./src/scripts/ts-build.ts --trace-warnings --experimental-json-modules
Run Code Online (Sandbox Code Playgroud)
我在打字稿文件中有这样的无扩展导入
import { logger } from './logger';
Run Code Online (Sandbox Code Playgroud)
我明白了
ERR_MODULE_NOT_FOUND
但如果我把它改成
import { logger } from './logger.js';
Run Code Online (Sandbox Code Playgroud)
有用。
为什么是这样?
Cha*_*ark 10
我通过 Node 上的这些实验性功能解决了这个问题v14.15.0。
node --loader ts-node/esm --experimental-specifier-resolution=node your/entry.ts
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想使用 command node,ts-node或者webpack serve使用带有 import 语句的打字稿条目文件(例如 server.ts 或 webpack.config.ts),您可以通过在 tsconfig.ts 中的选项compilerOptions下设置来解决问题。ts-node
{
"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"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9882 次 |
| 最近记录: |