【问题标题】:Error [ERR_REQUIRE_ESM]: Must use import to load ES module错误 [ERR_REQUIRE_ESM]: 必须使用 import 来加载 ES 模块
【发布时间】:2020-09-06 09:28:43
【问题描述】:

我是 javascript 的超级新手,我尝试使用 npm 运行的文件 app.js 如下所示:

import {placeOnWallComponent, wallFromFloorComponent} from './wall-from-floor'
AFRAME.registerComponent('place-on-wall', placeOnWallComponent)
AFRAME.registerComponent('wall-from-floor', wallFromFloorComponent)

当我将文件类型更改为 app.mjs 而不是 app.js 时,我收到另一个错误: "必须使用 import 加载 ES Module。"

我也有这个作为我的 package.json

{
  "name": "src",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "@std/esm": "cjs",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.mjs"
  },
  "author": "",
  "license": "ISC"
}

如何解决这个错误?

更新:即使我将文件更改为 .mjs 后,它仍然会发生。如果我尝试让 start 只是 'app.mjs' 而不是 'node app.js',我会得到:

'此文件没有与之关联的应用'

【问题讨论】:

  • 您将wall-from-floor.js 重命名为wall-from-floor.mjs 并将mainapp.js 更新为app.mjs
  • "app.mjs 而不是 app.mjs" ????

标签: javascript node.js


【解决方案1】:

添加

"type": "module"

在你的 package.json 中

将文件扩展名“.js”更改为“.mjs”并重试该命令

node --experimental-modules app.mjs

【讨论】:

    【解决方案2】:

    这是错误的"@std/esm": "cjs",

    @std/esm 已弃用。删除它并在命令行上运行 npm install esm 来安装 esm 包。

    将您的加载脚本调整为"start": "node -r esm app.mjs",以便在您的应用运行时加载 esm。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 2021-09-26
      • 2020-11-10
      • 2021-12-17
      • 2022-12-17
      • 2021-12-01
      • 2020-10-13
      • 2021-09-06
      相关资源
      最近更新 更多