【问题标题】:"Cannot use import statement outside a module" with --experimental-modules set设置了 --experimental-modules 的“不能在模块外使用 import 语句”
【发布时间】:2020-03-28 16:11:30
【问题描述】:

我正在尝试在我的 Webpack 配置文件中使用 ES 导入,但我没有让 Node 接受它们。

webpack.config.js:

import webpack from 'webpack';

export default {
  mode: 'development'
};

在 package.json 中:

{
  "scripts": {
    "start": "node --experimental-modules node_modules/webpack-dev-server/bin/webpack-dev-server.js"
  }
}

但是,当我尝试使用 npm start 运行它时,我收到以下错误:

C:\redacted\webpack.config.js:1
import webpack from 'webpack';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1072:16)
    at Module._compile (internal/modules/cjs/loader.js:1122:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at WEBPACK_OPTIONS (C:\redacted\node_modules\webpack-cli\bin\utils\convert-argv.js:114:13)
    at requireConfig (C:\redacted\node_modules\webpack-cli\bin\utils\convert-argv.js:116:6)
    at C:\redacted\node_modules\webpack-cli\bin\utils\convert-argv.js:123:17

我做错了什么?如何让它尊重 --experimental-modules 标志并允许 import 声明?

相关版本:

  • 节点:12.16.1
  • npm: 6.13.4
  • webpack:4.41.8
  • webpack-cli: 3.3.11
  • webpack-dev-server: 3.10.3

【问题讨论】:

    标签: javascript node.js webpack


    【解决方案1】:

    基于NodeJS docs,Node 将文件视为 ES 模块时

    • .mjs 扩展名结尾的文件
    • .js 结尾的文件,当最近的父package.json 文件包含一个顶级字段type,其值为module

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-09
      • 2020-01-27
      • 2020-02-11
      • 2020-12-11
      • 2021-04-17
      相关资源
      最近更新 更多