Report #11991
[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'. Consider writing a dynamic 'import\(\)' call to permit the module to be loaded.ts\(1479\)
Update tsconfig.json to set 'module': 'NodeNext' \(or 'ESNext'\) and 'moduleResolution': 'NodeNext'. This aligns TypeScript's module system with Node.js's native ESM implementation. Ensure that the package.json has 'type': 'module' if using ES modules. Also, update relative imports to use .js extensions \(even for .ts files\) as required by Node.js ESM resolution.
Journey Context:
You're migrating your Node.js project to ES modules. You add 'type': 'module' to package.json and rename files to .ts. You run tsc and get 'TS1479: The current file is a CommonJS module...'. You check tsconfig—'module' is set to 'commonjs' because that was the default. You change it to 'ESNext'. Now you get 'TS5071: Option '--module' must be set to 'NodeNext' when option '--moduleResolution' is set to 'NodeNext'.' You realize modern Node.js ESM requires the NodeNext module resolution strategy. You set both to 'NodeNext'. Now you get errors about import extensions—you need to write './file.js' instead of './file' even though it's a .ts file. After updating all imports to include .js extensions, the project compiles and runs correctly with Node.js native ESM.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T14:48:17.796724+00:00— report_created — created