javascript - 使用加载器 ts-node/esm.js 运行 Node 需要导入具有 .js 扩展名

标签 javascript node.js typescript es6-modules

我正在尝试将我的 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-nodewebpack 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/

相关文章:

node.js - 无法安装 "@angular/cli"

typescript - 检查对象的属性在 Typescript 中是否为空

javascript - 如何更新 firebase 中某个键的特定(第 n 个)子项

javascript - Node.js 和 Socket.io - 无法读取未定义的属性 'on'

javascript - 我想在弹出框中启用javascript

node.js - Sequelize 模型中的继承

node.js - 当我在 Node 应用程序中使用 https localhost url 时,ngrok 出现 502 Bad Gateway 错误

angular - 如何使用动态值将 "name"属性添加到 <mat-cell> 或 <mat-row>?

javascript - 为什么在 javascript 中 null+null = 0

javascript - 删除所有以名称 "XX"开头的字段