"SyntaxError: Cannot use import statement outside a module" error in ts-node while modules are CommonJS
"SyntaxError: Cannot use import statement outside a module" error in ts-node while modules are CommonJS
“SyntaxError: Cannot use import statement outside a module”错误的主要原因是非CommonJS模块(tsconfig.json中的compilerOptions.module
),但我在 "module": "CommonJS"
.
中遇到了同样的错误
最初,我的 tsconfig.json 是:
{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": false,
"experimentalDecorators": true,
"baseUrl": "./01-Source",
"paths": {
"@EnterpriseBusinessRules/*": [ "./BusinessRules/Enterprise/*"],
// Other aliases
}
}
}
但是使用这个配置,ts-node 将无法理解别名并且会出错
Error: Cannot find module '@EnterpriseBusinessRules/XXX/NNN'
尽管 ts-node 不理解 alieses,但它理解 import
。
为了解决别名问题,我添加了
{
"compilerOptions": { /* */ },
"ts-node": {
"require": [
"tsconfig-paths/register"
]
}
}
部分到 *tsconfig.json 现在错误是
import {
^^^^^^
SyntaxError: Cannot use import statement outside a module
我知道在 ts-node
组中我们可以像这样覆盖 compilerOptions
:
{
"ts-node": {
"compilerOptions": {
"module": "CommonJS",
"esModuleInterop": true
},
"require": [
"tsconfig-paths/register"
]
}
}
但是 module 已经是 CommonJS 并且 esModuleInterop 已经是 true,所以我一定不要覆盖它(但即使是尝试,也没有改变)
这种情况是没有安装的原因ts-node。
我通过 nodemon 执行了我的 .ts 文件,它在目标时委托 ts-node 的执行文件是 .ts,但必须安装 ts-node。
“SyntaxError: Cannot use import statement outside a module”错误的主要原因是非CommonJS模块(tsconfig.json中的compilerOptions.module
),但我在 "module": "CommonJS"
.
最初,我的 tsconfig.json 是:
{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": false,
"experimentalDecorators": true,
"baseUrl": "./01-Source",
"paths": {
"@EnterpriseBusinessRules/*": [ "./BusinessRules/Enterprise/*"],
// Other aliases
}
}
}
但是使用这个配置,ts-node 将无法理解别名并且会出错
Error: Cannot find module '@EnterpriseBusinessRules/XXX/NNN'
尽管 ts-node 不理解 alieses,但它理解 import
。
为了解决别名问题,我添加了
{
"compilerOptions": { /* */ },
"ts-node": {
"require": [
"tsconfig-paths/register"
]
}
}
部分到 *tsconfig.json 现在错误是
import {
^^^^^^
SyntaxError: Cannot use import statement outside a module
我知道在 ts-node
组中我们可以像这样覆盖 compilerOptions
:
{
"ts-node": {
"compilerOptions": {
"module": "CommonJS",
"esModuleInterop": true
},
"require": [
"tsconfig-paths/register"
]
}
}
但是 module 已经是 CommonJS 并且 esModuleInterop 已经是 true,所以我一定不要覆盖它(但即使是尝试,也没有改变)
这种情况是没有安装的原因ts-node。 我通过 nodemon 执行了我的 .ts 文件,它在目标时委托 ts-node 的执行文件是 .ts,但必须安装 ts-node。