chalk - 错误 [ERR_REQUIRE_ESM]:ES 模块的 require()
chalk - Error [ERR_REQUIRE_ESM]: require() of ES Module
您好,我尝试在我非常简单的应用程序上安装粉笔,然后出现错误:
Error [ERR_REQUIRE_ESM]: require() of ES Module my-file-is-here and chalk\node_modules\chalk\source\index.js from my-file-is-here not supported.
Instead change the require of index.js in my-file-is-here to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (`my-file-is-here`) {
code: 'ERR_REQUIRE_ESM'
}
这就是我的代码:
const os = require("os")
const chalk = require("chalk")
console.log("app running")
认为它是 ES 模块并以 import
方式工作,但您可以这样做:
const { chalk } = require("chalk");
当我以 v8 风格使用 firebase 时,它对我有用。
//你的第一次改变Package.json
"main": "app.js",
"type": "module",//use this line
//第二次变化App.js
import os from 'os' // const os = require("os")
import chalk from 'chalk';//const chalk = require("chalk")
粉笔 5 已更改为 ESM。他们提供了一个 link 来更好地理解这意味着什么:Pure ESM.
来自粉笔自述文件:
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.
截至此回复,粉笔 4 的最新版本是 4.1.2
。
这与您使用的版本有关,我认为是 5.0.0。改为使用 chalk@4.1.2
npm uninstall chalk
然后
npm i chalk@4.1.2
现在您可以运行您的代码
const chalk = require('chalk');
console.log(chalk.blue('Hello world!'));
- 将
"type": "module"
添加到您的 package.json。
- 在你的
package.json
中用 "exports": "./index.js"
替换 "main": "index.js"
。
- 将 package.json 中的“引擎”字段更新为 Node.js 12:“节点”:“^12.20.0 || ^14.13.1 || >=16.0.0”。
- 从所有 JavaScript 个文件中删除
'use strict';
。
- 将所有
require()/module.export
替换为 import/export
。
imports: import x from '.'
仅使用完整的相对文件路径; → import x from './index.js';
.
如果您有 TypeScript 类型定义(例如 index.d.ts
),请将其更新为使用 ESM imports/exports。
可选但推荐使用 node: protocol
导入。
第一步
npm uninstall chalk(删除所有chalk文件)
第 2 步
npm 安装 chalk@4.1.0
const chalk = require("chalk");
console.log(chalkl.green("Hello"));
完成
您可以在 CJS
中使用 dynamic import
和 chalk^5 ESM
async function chalk() {
return (await import("chalk")).default;
}
async function main(){
console.log((await chalk()).gray(">", ...commands));
}
您好,我尝试在我非常简单的应用程序上安装粉笔,然后出现错误:
Error [ERR_REQUIRE_ESM]: require() of ES Module my-file-is-here and chalk\node_modules\chalk\source\index.js from my-file-is-here not supported.
Instead change the require of index.js in my-file-is-here to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (`my-file-is-here`) {
code: 'ERR_REQUIRE_ESM'
}
这就是我的代码:
const os = require("os")
const chalk = require("chalk")
console.log("app running")
认为它是 ES 模块并以 import
方式工作,但您可以这样做:
const { chalk } = require("chalk");
当我以 v8 风格使用 firebase 时,它对我有用。
//你的第一次改变Package.json
"main": "app.js",
"type": "module",//use this line
//第二次变化App.js
import os from 'os' // const os = require("os")
import chalk from 'chalk';//const chalk = require("chalk")
粉笔 5 已更改为 ESM。他们提供了一个 link 来更好地理解这意味着什么:Pure ESM.
来自粉笔自述文件:
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.
截至此回复,粉笔 4 的最新版本是 4.1.2
。
这与您使用的版本有关,我认为是 5.0.0。改为使用 chalk@4.1.2
npm uninstall chalk
然后
npm i chalk@4.1.2
现在您可以运行您的代码
const chalk = require('chalk');
console.log(chalk.blue('Hello world!'));
- 将
"type": "module"
添加到您的 package.json。 - 在你的
package.json
中用"exports": "./index.js"
替换"main": "index.js"
。 - 将 package.json 中的“引擎”字段更新为 Node.js 12:“节点”:“^12.20.0 || ^14.13.1 || >=16.0.0”。
- 从所有 JavaScript 个文件中删除
'use strict';
。 - 将所有
require()/module.export
替换为import/export
。
imports: import x from '.'
仅使用完整的相对文件路径; → import x from './index.js';
.
如果您有 TypeScript 类型定义(例如 index.d.ts
),请将其更新为使用 ESM imports/exports。
可选但推荐使用 node: protocol
导入。
第一步 npm uninstall chalk(删除所有chalk文件)
第 2 步 npm 安装 chalk@4.1.0
const chalk = require("chalk");
console.log(chalkl.green("Hello"));
完成
您可以在 CJS
dynamic import
和 chalk^5 ESM
async function chalk() {
return (await import("chalk")).default;
}
async function main(){
console.log((await chalk()).gray(">", ...commands));
}