I am trying to use the chalk npm. My code is:
const chalk = require('chalk');
console.log(
chalk.green('All sytems go')
chalk.orange('until').underline
chalk.black(chalk.bgRed('an error occurred'))
);
And I receive this error in my terminal when I type node main.js
Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/ezell/Documents/CodeX/NPM/node_modules/chalk/source/index.js from /Users/ezell/Documents/CodeX/NPM/main.js not supported. Instead change the require of index.js in /Users/ezell/Documents/CodeX/NPM/main.js to a dynamic import() which is available in all CommonJS modules. at Object. (/Users/ezell/Documents/CodeX/NPM/main.js:1:15) { code: 'ERR_REQUIRE_ESM' }
CodePudding user response:
The latest version of Chalk is only compatible with ESM modules and thus wants you to load it with import
, not require()
.
From the doc:
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.
So, your choices are:
Switch your project to an ESM module and load the latest version of Chalk with
import
instead ofrequire()
.Install version 4 of Chalk which can be used with
require()
.With a fairly recent version of nodejs, you can use dynamic import to load the ESM module into your CommonJS module:
const chalk = await import('chalk);
CodePudding user response:
You need to switch to using the import
keyword, as Chalk 5 only supports ESM modules.
So, to fix your code to adapt these changes, you need to...
Edit your
package.json
file to allow ESM imports. Add the following in yourpackage.json
file:{ "type": "module" }
Load Chalk with the
import
keyword, as so:import chalk from "chalk";
If you, however, want to use require()
, you need to downgrade to Chalk 4. Follow these steps to downgrade.
Replace your existing
chalk
key with the following in yourpackage.json
file:{ "dependencies": { "chalk": "4.1.2" } }
Then, run the following command to install Chalk from your
package.json
file. Make sure to run this in the directory in which yourpackage.json
file is in!$ npm install
Use the
require()
statement like normal.const chalk = require("chalk");
In summary, these are the two things you can do.
- Stay with Chalk 5, and update
import
statements. - Downgrade to Chalk 4, and keep
require()
statements.