Home > Software engineering >  How would you fix an 'ERR_REQUIRE_ESM' error?
How would you fix an 'ERR_REQUIRE_ESM' error?

Time:04-09

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:

  1. Switch your project to an ESM module and load the latest version of Chalk with import instead of require().

  2. Install version 4 of Chalk which can be used with require().

  3. 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...

  1. Edit your package.json file to allow ESM imports. Add the following in your package.json file:

    {
      "type": "module"
    }
    
  2. 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.

  1. Replace your existing chalk key with the following in your package.json file:

    {
      "dependencies": {
        "chalk": "4.1.2"
      }
    }
    
  2. Then, run the following command to install Chalk from your package.json file. Make sure to run this in the directory in which your package.json file is in!

    $ npm install
    
  3. 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.
  • Related