Report #104599
[bug\_fix] Error \[ERR\_REQUIRE\_ESM\]: require\(\) of ES Module not supported
Change \`require\(\)\` to dynamic \`import\(\)\` or convert the entire project to ESM \(set \`"type": "module"\` in package.json and use \`import\` statements\).
Journey Context:
I was upgrading an Express.js project from CommonJS to use the latest chalk@5 \(which is pure ESM\). I kept the old \`const chalk = require\('chalk'\)\` and got \`ERR\_REQUIRE\_ESM\`. Nodes 12-14 didn't support synchronous require for ESM modules. I spent hours searching for a polyfill or an npm alias. The fix: I changed \`require\('chalk'\)\` to \`const chalk = await import\('chalk'\)\` and wrapped my top-level code in an async function. But that broke other CommonJS \`require\` calls. Finally, I renamed the project's package.json to add \`"type": "module"\` and converted all \`require\` calls to \`import\` statements. The root cause is that ESM modules cannot be imported with \`require\(\)\` because they are loaded asynchronously, and Node's \`require\` is synchronous. Modern libraries like chalk dropped CommonJS exports, forcing consumers to migrate.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-09-13T20:04:01.137084+00:00— report_created — created