use*_*248 1 javascript node.js typescript ts-node
我在使用 ts-node 和 ESM 构建项目时遇到了巨大的麻烦。关于这个主题还有其他几个问题,但我已经尝试了所有这些问题的解决方案,但一无所获。很难判断哪些信息已经过时,大多数答案都涉及在配置中添加其他选项,这对我的情况似乎没有任何影响。
这是演示设置:
节点 v20.4
Package.json 的类型为:“module”
作为我当前使用的启动脚本npx ts-node-esm src/index.ts
ts-node 和 Typescript 都安装在项目本地
tsconfig.json如下:
{
"compilerOptions": {
"target": "ESNext",
"baseUrl": ".",
"esModuleInterop": true,
"moduleResolution": "NodeNext",
"module": "ESNext",
},
"types": ["node"]
}
Run Code Online (Sandbox Code Playgroud)
我们的演示文件 - src/index.ts:
import { sayHi } from "src/helpers.js";
sayHi();
Run Code Online (Sandbox Code Playgroud)
和 src/helpers.ts:
export function sayHi() { console.log('hi!') }
Run Code Online (Sandbox Code Playgroud)
到目前为止,我当前在运行时遇到的错误是Unknown file extension ".ts" for src\index.ts
(我了解到“tsx”可能会起作用,但如果我这里发生配置错误,我想了解出了什么问题。)
除了手头的实际问题之外,我也不介意一些更广泛的建议。这实际上明智吗?我读到的所有内容都表明新项目应该使用 ESM,因为 CommonJs 没有特别的优势(前提是您可以使 ESM 工作......)。同时,ts-node(或类似的)的功能对于实现快速开发反馈循环的作用似乎非常重要。考虑到这两个事实,我很惊讶我在设置它时遇到了这么多麻烦。
use*_*248 11
这并不是一个错误的配置——带有 esm 的 ts-node 在这个非常特定的时间实例上与节点 20 不能很好地配合。按照https://github.com/TypeStrong/ts-node/issues/1997 的说法,使用node --loader ts-node/esm src/index.ts确实有效,就像回到 LTS 版本一样。
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |