'chalk - Error [ERR_REQUIRE_ESM]: require() of ES Module
Hi tried to install chalk on my very simple app and then i got error:
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'
}
thats my code:
const os = require("os")
const chalk = require("chalk")
console.log("app running")
Solution 1:[1]
Chalk 5 has changed to ESM. They provide a link to better understand what that means: Pure ESM.
From chalk README:
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.
As of this reply, the last version of chalk 4 is 4.1.2.
Solution 2:[2]
That is something to do with the version you are using which is I think 5.0.0. Use [email protected] instead
npm uninstall chalk
then
npm i [email protected]
now you can run your code
const chalk = require('chalk');
console.log(chalk.blue('Hello world!'));
Solution 3:[3]
Step-1 npm uninstall chalk (delete all chalk files)
Step-2 npm install [email protected]
const chalk = require("chalk");
console.log(chalkl.green("Hello"));
Done??
Solution 4:[4]
You can use dynamic import with chalk^5 ESM in CJS
async function chalk() {
return (await import("chalk")).default;
}
async function main(){
console.log((await chalk()).gray(">", ...commands));
}
Solution 5:[5]
Think it's ES module and works in import way, but you can do something like this:
const { chalk } = require("chalk");
It worked for me when I worked with firebase in v8 style.
Solution 6:[6]
//First Change in you Package.json
"main": "app.js",
"type": "module",//use this line
//Second change in App.js
import os from 'os' // const os = require("os")
import chalk from 'chalk';//const chalk = require("chalk")
Solution 7:[7]
- Add
"type": "module"to your package.json. - Replace
"main": "index.js"with"exports": "./index.js"in yourpackage.json. - Update the "engines" field in package.json to Node.js 12: "node": "^12.20.0 || ^14.13.1 || >=16.0.0".
- Remove
'use strict';from all JavaScript files. - Replace all
require()/module.exportwithimport/export.
Use only full relative file paths for imports: import x from '.'; ? import x from './index.js';.
If you have a TypeScript type definition (for example index.d.ts), update it to use ESM imports/exports.
Optional but recommended, use the node: protocol for imports.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | AJ Gray |
| Solution 2 | Green_Lab |
| Solution 3 | Kai - Kazuya Ito |
| Solution 4 | HerberthObregon |
| Solution 5 | Archil Labadze |
| Solution 6 | Rishu Singh |
| Solution 7 | Preet Sangha |
