Report #20765
[bug\_fix] Error \[ERR\_REQUIRE\_ESM\]: require\(\) of ES Module ... from ... is not supported. Instead change the require of ... to a dynamic import\(\)
Convert the consuming file to ESM by renaming it to .mjs or setting 'type': 'module' in package.json and converting all require\(\) to import, or use dynamic import\(\) \(const mod = await import\('package'\)\) to load the ESM module asynchronously from within CommonJS.
Journey Context:
Developer runs npm update which upgrades chalk from v4 to v5 \(or node-fetch v2 to v3, or got v11 to v12\). Their existing CommonJS server.js contains const chalk = require\('chalk'\). Upon starting the app, Node.js throws ERR\_REQUIRE\_ESM. The developer is confused because node\_modules contains the package. They check chalk's package.json and see 'type': 'module'. They try changing require to 'import chalk from 'chalk'' but get 'SyntaxError: Cannot use import statement outside a module'. They realize they must either refactor the entire project to ESM by adding 'type': 'module' to package.json \(cascading into converting all other require statements\), or they must use the async dynamic import syntax: const \{ default: chalk \} = await import\('chalk'\) wrapped in an async IIFE or used in an async function, allowing CommonJS to consume the ESM package without full migration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:15:34.608560+00:00— report_created — created