Search code examples
node.jsnpmchalk

How would you fix an 'ERR_REQUIRE_ESM' error?


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.<anonymous> (/Users/ezell/Documents/CodeX/NPM/main.js:1:15) {
  code: 'ERR_REQUIRE_ESM'
}

Solution

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