在使用 Node.js 或前端开发时,常会遇到 “SyntaxError: Cannot use import statement outside a module” 的错误。这通常是由于 ES6 模块和 CommonJS 模块之间的差异引起的。以下是一些常见的解决方法:
1. 修改文件扩展名
将 .js
文件扩展名更改为 .mjs
。Node.js 原生支持 .mjs
扩展名的 ES6 模块:
// example.mjs
import something from './module';
2. 在 package.json
中添加 type: "module"
在您的 package.json
文件中添加 "type": "module"
,以指示 Node.js 这是一个 ES6 模块项目:
{
"type": "module"
}
3. TypeScript 项目配置
在 TypeScript 项目中,可以通过调整 tsconfig.json
文件来支持 ES6 模块:
在 tsconfig.json
文件中设置 module
为 ESNext
或 ES6
:
{
"compilerOptions": {
"module": "ESNext", // 或者 "ES6"
"target": "ESNext" // 或者 "ES6"
}
}
此外,还可以确保 TypeScript 编译输出的文件扩展名为 .mjs
,通过在 tsconfig.json
中添加 outDir
和 moduleResolution
配置:
{
"compilerOptions": {
"module": "ESNext",
"target": "ESNext",
"moduleResolution": "node",
"outDir": "./dist",
"esModuleInterop": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true
},
"include": ["src/**/*.ts"]
}