Skip to content

如何解决 "SyntaxError: Cannot use import statement outside a module" 错误

Posted on:2024年6月18日 at 01:05

在使用 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 文件中设置 moduleESNextES6

{
  "compilerOptions": {
    "module": "ESNext", // 或者 "ES6"
    "target": "ESNext" // 或者 "ES6"
  }
}

此外,还可以确保 TypeScript 编译输出的文件扩展名为 .mjs,通过在 tsconfig.json 中添加 outDirmoduleResolution 配置:

{
  "compilerOptions": {
    "module": "ESNext",
    "target": "ESNext",
    "moduleResolution": "node",
    "outDir": "./dist",
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true
  },
  "include": ["src/**/*.ts"]
}