📜  错误 [ERR_REQUIRE_ESM]: ES Module 的 require() 的解决方案 - Javascript (1)

📅  最后修改于: 2023-12-03 15:42:08.339000             🧑  作者: Mango

错误: ERR_REQUIRE_ESM

在使用require()导入ES Module时,可能会遇到以下错误:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

这是因为Node.js已经支持了ES Module,它们比CommonJS Module更加现代和优化。

解决方案
1. 改用import

在导入ES Module时,使用import替换require()

import { func } from './module.js';
2. 添加文件扩展名

对于不支持ES Module语法的模块,可以将文件扩展名改为.cjs.mjs,以明确标识模块类型。

const data = require('./data.mjs');
3. 使用--experimental-modules选项

如果需要在Node.js中使用ES Module,可以在启动应用程序时使用--experimental-modules选项。

node --experimental-modules app.js

此选项可以让Node.js从文件扩展名(.mjs.js)来自动识别模块类型。

4. 修改package.json文件

如果不想在启动应用程序时使用--experimental-modules选项,可以通过修改package.json文件来使用ES Module。

{
  "type": "module",
  "main": "app.js"
}

package.json文件中添加type字段并将其设置为module,这样Node.js将自动识别所有.js.mjs文件为ES Module,并启用ES Module语法。

结论

Node.js现在支持ES Module,这为我们的应用程序带来了更好的可维护性、可读性和性能。通过遵循上述解决方案,我们可以愉快地使用ES Module,并减少require()导致的ERR_REQUIRE_ESM错误。