我正在尝试从hello.js将myArr
导入到index.js中。但是出现错误:
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
文件 hello.js
export let myArr = ['hello', 'hi', 'hey'];
文件 index.js
import { myArr } from './hello.js';
console.log(myArr);
我犯了什么错误?我正在尝试从hello.js将myArr
导入到index.js中。但是出现错误:
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
文件 hello.js
export let myArr = ['hello', 'hi', 'hey'];
文件 index.js
import { myArr } from './hello.js';
console.log(myArr);
我犯了什么错误?使用版本2:
npm install node-fetch@2
node-fetch从第三个版本开始是一个只支持ESM的模块 - 您无法使用require()导入它。
如果您无法切换到ESM,请使用仍与CommonJS兼容的v2。关键bug修复将继续发布对于v2。
node-fetch
有什么关系? - Maxime Chéramyts-node
进行调试时,在TypeScript中使用node-fetch@3
。通过网页搜索找到了这里,我猜想许多其他人也遇到了同样的问题。 - Felipe我已经顺利运行了你的代码,请检查以下两点:
package.json
文件包括一行 "type": "module"
。没有这一行,Node.js 将默认使用 CommonJS 模块而非 ESM。node_modules
目录并重新运行 npm install
。 - Diego Betto"type": "module"
。我不知道哪里出了问题。 - Pramod--require|-r
标志,例如node -r ./server
。 - Ricky Boyce在构建我的React项目时,我遇到了类似的问题。
以下是错误信息:
ERROR in ./src/index.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/pradeep/Work/my_project/node_modules/@babel/runtime/helpers/interopRequireWildcard/_index.mjs
然后我意识到我正在使用与安装此项目中使用的不同版本的Node.js。
我有两个选择:
我选择了第一种方法,并且它对我起了作用。
如果您的 Node.js 版本低于 14,例如v12,则必须指定以下标志:
node --experimental-modules your.mjs
node your.mjs --experimental-modules
。 - btjakes我使用 nvm 安装最新稳定版本的 Node.js。
要删除 package-lock.json 文件和 node_modules 文件夹,请运行 npm。然后我执行 npm start
解决了我的问题。
npx babel-node index.js
.mjs
,则有一整套规则需要遵循才能使import
和export
在node.js中正常工作。当我尝试使用它时,我发现它非常麻烦。我相信总有一天它会变得内置且易于使用,但是node.js目前还没有达到那个程度。 - jfriend00