您将如何修复 'ERR_REQUIRE_ESM' 错误?
How would you fix an 'ERR_REQUIRE_ESM' error?
我正在尝试使用 chalk npm。
我的代码是:
const chalk = require('chalk');
console.log(
chalk.green('All sytems go') +
chalk.orange('until').underline +
chalk.black(chalk.bgRed('an error occurred'))
);
当我输入 node main.js
时,我在终端中收到此错误
错误 [ERR_REQUIRE_ESM]:不支持来自 /Users/ezell/Documents/CodeX/NPM/main.js 的 ES 模块 /Users/ezell/Documents/CodeX/NPM/node_modules/chalk/source/index.js 的 require()。
而是将 /Users/ezell/Documents/CodeX/NPM/main.js 中 index.js 的要求更改为在所有 CommonJS 模块中可用的动态 import() 。
在对象。 (/Users/ezell/Documents/CodeX/NPM/main.js:1:15) {
代码:'ERR_REQUIRE_ESM'
}
最新版本的 Chalk 仅与 ESM 模块兼容,因此希望您使用 import
加载它,而不是 require()
。
来自文档:
IMPORTANT: Chalk 5 is ESM. If you want to use Chalk with TypeScript or
a build tool, you will probably want to use Chalk 4 for now. Read more.
那么,您的选择是:
将您的项目切换到 ESM 模块并使用 import
而不是 require()
加载最新版本的 Chalk。
安装可与 require()
一起使用的第 4 版 Chalk。
使用较新版本的 nodejs,您可以使用动态导入将 ESM 模块加载到您的 CommonJS 模块中:const chalk = await import('chalk);
您需要切换到使用 import
关键字,因为 Chalk 5 仅支持 ESM 模块。
因此,要修复您的代码以适应这些更改,您需要...
编辑您的 package.json
文件以允许 ESM 导入。在您的 package.json
文件中添加以下内容:
{
"type": "module"
}
使用 import
关键字加载 Chalk,如下所示:
import chalk from "chalk";
但是,如果您想使用 require()
,则需要降级到 Chalk 4。按照以下步骤进行降级。
用 package.json
文件中的以下内容替换现有的 chalk
密钥:
{
"dependencies": {
"chalk": "4.1.2"
}
}
然后,运行 以下命令从您的 package.json
文件安装 Chalk。确保在 package.json
文件所在的目录中 运行!
$ npm install
像平常一样使用 require()
语句。
const chalk = require("chalk");
总而言之,这是您可以做的两件事。
- 继续使用 Chalk 5,并更新
import
个语句。
- 降级到 Chalk 4,并保留
require()
个语句。
我正在尝试使用 chalk npm。 我的代码是:
const chalk = require('chalk');
console.log(
chalk.green('All sytems go') +
chalk.orange('until').underline +
chalk.black(chalk.bgRed('an error occurred'))
);
当我输入 node main.js
时,我在终端中收到此错误错误 [ERR_REQUIRE_ESM]:不支持来自 /Users/ezell/Documents/CodeX/NPM/main.js 的 ES 模块 /Users/ezell/Documents/CodeX/NPM/node_modules/chalk/source/index.js 的 require()。 而是将 /Users/ezell/Documents/CodeX/NPM/main.js 中 index.js 的要求更改为在所有 CommonJS 模块中可用的动态 import() 。 在对象。 (/Users/ezell/Documents/CodeX/NPM/main.js:1:15) { 代码:'ERR_REQUIRE_ESM' }
最新版本的 Chalk 仅与 ESM 模块兼容,因此希望您使用 import
加载它,而不是 require()
。
来自文档:
IMPORTANT: Chalk 5 is ESM. If you want to use Chalk with TypeScript or a build tool, you will probably want to use Chalk 4 for now. Read more.
那么,您的选择是:
将您的项目切换到 ESM 模块并使用
import
而不是require()
加载最新版本的 Chalk。安装可与
require()
一起使用的第 4 版 Chalk。使用较新版本的 nodejs,您可以使用动态导入将 ESM 模块加载到您的 CommonJS 模块中:
const chalk = await import('chalk);
您需要切换到使用 import
关键字,因为 Chalk 5 仅支持 ESM 模块。
因此,要修复您的代码以适应这些更改,您需要...
编辑您的
package.json
文件以允许 ESM 导入。在您的package.json
文件中添加以下内容:{ "type": "module" }
使用
import
关键字加载 Chalk,如下所示:import chalk from "chalk";
但是,如果您想使用 require()
,则需要降级到 Chalk 4。按照以下步骤进行降级。
用
package.json
文件中的以下内容替换现有的chalk
密钥:{ "dependencies": { "chalk": "4.1.2" } }
然后,运行 以下命令从您的
package.json
文件安装 Chalk。确保在package.json
文件所在的目录中 运行!$ npm install
像平常一样使用
require()
语句。const chalk = require("chalk");
总而言之,这是您可以做的两件事。
- 继续使用 Chalk 5,并更新
import
个语句。 - 降级到 Chalk 4,并保留
require()
个语句。