Report #64130
[bug\_fix] Error \[ERR\_REQUIRE\_ESM\]: require\(\) of ES Module ... not supported.
Convert the importing file to ESM by renaming to .mjs, adding "type": "module" to package.json, or replace require\(\) with dynamic import\(\) which can load ESM.
Journey Context:
Installing a modern version of node-fetch \(v3\+\) or chalk \(v5\+\) into an existing CommonJS project that uses require\('node-fetch'\). Upon running node index.js, the process crashes immediately with ERR\_REQUIRE\_ESM. Inspecting the installed package's package.json reveals "type": "module". Initially attempt to fix by using require\('node-fetch'\).default, which fails with the same error because the issue is the loader, not the export shape. Consider downgrading to node-fetch@2 \(CJS version\), but this misses security updates. Researching the Node.js ESM implementation reveals that require\(\) is synchronous and cannot load ES Modules due to the top-level await and static analysis requirements of ESM. The robust fix is to convert the project to ESM by adding "type": "module" to package.json and renaming .js files to use import syntax, or to use the dynamic import\('node-fetch'\) function, which returns a Promise and is supported in CommonJS files to asynchronously load ESM modules.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T14:07:54.583898+00:00— report_created — created