为什么在 nodejs 项目中不能在 typescript 项目 ts-node 执行.ts 文件?
在 typescript 项目中使用 ts-node 执行 .ts 文件时遇到无法识别.ts 文件后缀的错误,该问题可能是由于以下原因造成的:
1. package.json 中 “type”: “module” 的作用
在 package.JSon 中添加 “type”: “module” 表示该项目为 es 模块项目,它将使用 es 模块语法而不是 commonjs 模块语法。
2. “type”: “module” 对 npmjs.org 发布的影响
如果要将项目发布到 npmjs.org,则需要将 “type”: “module” 添加到您的 package.json 中。因为 npmjs.org 已逐步淘汰 commonjs 模块,并且需要所有新发布的包都使用 es 模块语法。
3. “syntaxerror: cannot use import statement outside a module” 错误的解决方案
此错误表明您尝试在文件顶部使用 import 语句,而该文件尚未声明为模块。要解决此错误,您可以在 tsconfig.json 文件中添加以下配置:
{ "compileroptions": { "esmoduleinterop": true, } }
此配置将允许您在非模块文件中使用 import 语句。之后,您还可以使用 ts-node-esm 执行您的脚本,如下所示:
ts-node-esm script.ts