Report #96610
[bug\_fix] 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'. \(1479\)
Set 'module': 'Node16' \(or 'NodeNext'\) and 'moduleResolution': 'Node16' \(or 'NodeNext'\) in tsconfig.json. Ensure your package.json has 'type': 'module' if you intend to use ESM, or use the .mts extension for ESM files in a CJS package.
Journey Context:
You install a new dependency like 'node-fetch' v3 or 'chalk' v5 which are ESM-only. Your existing TypeScript project uses 'module': 'commonjs' \(the default\). Immediately, TypeScript complains it cannot import the ESM module. You try changing 'module': 'esnext' in tsconfig. The TS error goes away, but now when you run 'node dist/index.js', Node crashes with 'Cannot use import statement outside a module'. You realize you need to tell Node this is ESM via package.json 'type': 'module', but that breaks other CommonJS requires in your codebase. You search and find that TypeScript 4.7 introduced 'module': 'Node16' which aligns TypeScript's emit with Node's native ESM/CJS detection based on file extensions and package.json type. Switching to Node16 module and moduleResolution fixes the interop without needing to change file extensions manually.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:44:43.163582+00:00— report_created — created