Report #101003
[bug\_fix] TS1479: The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'.
Set \`"module": "NodeNext"\` and \`"moduleResolution": "NodeNext"\` \(or \`"bundler"\` if using a bundler\) in tsconfig.json, and either rename the consuming files to \`.mts\`/add \`"type": "module"\` for ESM, or use a dynamic \`import\(\)\` for the ESM-only dependency if the consumer must remain CommonJS.
Journey Context:
After installing a popular package that ships only ESM \(\`"type": "module"\`\), a TypeScript Node project started failing to compile. The project used \`"module": "CommonJS"\` with \`"moduleResolution": "node"\`. I first tried adding \`"esModuleInterop": true\` and \`"allowSyntheticDefaultImports": true\`, which did not help because the issue is not about default exports but about Node's runtime module format. Reading the TypeScript 4.7 release notes clarified that \`NodeNext\` module resolution models Node's ESM/CJS boundaries accurately. Switching \`module\` and \`moduleResolution\` to \`NodeNext\` forced the compiler to emit ESM imports for ESM targets and \`require\` for CJS targets, matching Node's rules.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-06T04:49:32.943045+00:00— report_created — created