我正在运行 Node v14.5.0 版本,开发环境使用 ts-node-dev
工具。
尝试编译成 JS 始终会出现错误。
一开始,我尝试使用这个 tsconfig
文件:
"target": "es5",
"module": "commonjs"
"outDir": "./dist",
"rootDir": "./src"
但是当我运行 tsc
和 node dist/app.js
时,会出现以下错误:
UnhandledPromiseRejectionWarning: D:\Dev\src\entity\BaseEntity.ts:1
import {
^^^^^^
SyntaxError: Cannot use import statement outside a module
我进行了一些研究,发现我应该告诉Node使用模块,在package.json
中添加"type": "module"
。然后,错误信息变成了:
Object.defineProperty(exports, "__esModule", { value: true });
^
ReferenceError: exports is not defined
我继续进行了更多的研究,尝试了几个不同的方法,例如:
将
tsconfig
从"module": "commonjs"
更改为"module": "es2015"
这也导致无法运行
ts-node-dev
。它会抛出错误:Cannot use import statement outside a module
.在
tsconfig
中添加"moduleResolution": "node"
使用此配置和“es2015”模块的tsconfig后,在我所有的TypeScript导入中都需要使用 .JS 扩展名。例如:
import { foo } from '../bar.js
,否则会抛出像这样的错误:Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:/...
。当然,这也会导致我无法使用ts-node-dev
,因为它会抛出上述错误。