我正在尝试使用粉笔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时,我在终端中收到此错误
错误[错误_请求_ESM]:不支持/用户/ezell/文档/CodeX/NPM/main. js中ES模块/用户/ezell/文档/CodeX/NPM/节点_模块/chalk/源/index. js的require()。请改为将/用户/ezell/文档/CodeX/NPM/main. js中index.js的require更改为动态导入(),该动态导入在所有CommonJS模块中均可用。在对象处。(/用户/ezell/文档/CodeX/NPM/main.js:1:15){代码:'错误_要求_ESM' }
4条答案
按热度按时间0tdrvxhp1#
您需要切换到使用
import
关键字,因为Chalk 5仅支持ESM模块。因此,要修复代码以适应这些更改,您需要......
1.编辑
package.json
文件以允许ESM导入。在package.json
文件中添加以下内容:1.使用
import
关键字加载Chalk,如下所示:但是,如果您想使用
require()
,则需要降级到Chalk 4。按照以下步骤进行降级。1.在
package.json
文件中将现有chalk
密钥替换为以下内容:1.然后,运行以下命令从
package.json
文件安装Chalk。确保在package.json
文件所在的目录下运行此命令!1.像平常一样使用
require()
语句。总之,这是你可以做的两件事。
import
语句。require()
语句。roejwanj2#
解决方案,发生这种情况是因为您必须首先使用当前的稳定版本2.x:
之后:
这应该行得通。
relj7zay3#
nanoid出现相同的“ERR_REQUIRE_ESM”错误:^4.0.0 &有多种方法可以解决此错误:-
1)使用fix esm https://www.npmjs.com/package/fix-esm模块并按如下方式导入模块:
2)使用动态导入,如下所示:
请确保在上述两种情况下package.json中没有type:“module”字段,否则会出现“TypeError [ERR_UNKNOWN_FILE_EXTENSION]:未知文件扩展名”错误
3)将模块版本降级为稳定的旧版本,例如在我的情况下,当我将nanoid版本降级为:
r1wp621o4#
最新版本的Chalk仅与ESM模块兼容,因此希望您加载
import
,而不是require()
。来自文档:
重要提示:Chalk 5是ESM。如果您希望将Chalk与TypeScript或构建工具一起使用,您可能会暂时使用Chalk 4。Read more。
所以,你的选择是:
1.将您的项目切换到ESM模块,并使用
import
而不是require()
加载最新版本的Chalk。1.安装可与
require()
配合使用的Chalk版本4。1.在Node.JS的最新版本中,可以使用动态导入将ESM模块加载到CommonJS模块中:
const chalk = await import('chalk');