Typescript 未正确编译为 commonjs/es2015
Typescript not compiling correctly to commonjs/es2015
我是 运行ning 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 使用添加 "type": "module"
到 package.json
的模块。之后错误变为:
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,我被要求在我所有的打字稿导入中使用 .JS 扩展名。示例:import { foo } from '../bar.js
,否则会引发错误,如:Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:/...
。当然,阻止我使用 ts-node-dev
作为抛出上述错误。
问题出在 ormconfig.js
中,我的实体路径指向 .ts
文件而不是 .js
.
解决方案:
entities: ['dist/entity/*.js'],
migrations: ['dist/migration/**/*.js']
我是 运行ning 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 使用添加 "type": "module"
到 package.json
的模块。之后错误变为:
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,我被要求在我所有的打字稿导入中使用 .JS 扩展名。示例:
import { foo } from '../bar.js
,否则会引发错误,如:Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:/...
。当然,阻止我使用ts-node-dev
作为抛出上述错误。
问题出在 ormconfig.js
中,我的实体路径指向 .ts
文件而不是 .js
.
解决方案:
entities: ['dist/entity/*.js'],
migrations: ['dist/migration/**/*.js']