You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TS1479 is "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 instead."
In CJS packages whose tsconfig specifies "module": "nodenext", TypeScript will no longer produce an error when requiring a module known to be ESM.
For example, the following will now work: module_a/package.json:
{
...
"type": "module"
}
module_a/foo.js:
export const foo = "foo"
module_a/package.json:
(no "type": "module")
module_b/tsconfig.json:
{
"compilerOptions": {
"module": "nodenext"
}
}
module_b/foo.ts:
import foo from "module_a/foo"
💻 Use Cases
What do you want to use this for?
Interoperability between ESM and CJS.
What shortcomings exist with current approaches?
TypeScript does not allow CJS to require(ESM), even when it is supported by node.
What workarounds are you using in the meantime?
Have to avoid doing that.
The text was updated successfully, but these errors were encountered:
jfirebaugh
changed the title
Need a way to turn off TS1479 when require(ESM) _is_ supported
Need a way to turn off TS1479 when require(ESM) is supported
Nov 19, 2024
🔍 Search Terms
TS1479 is "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 instead."
But
require(ESM)
is now supported -- under--experimental-require-module
in node 20.x and 22.x and by default in node 23.x -- providing that the module graph contains no top-level await. So TypeScript needs a way to disable TS1479 when a user can assert that this is the case.✅ Viability Checklist
⭐ Suggestion
"module": "nodenext"
should disable TS1479.📃 Motivating Example
Prototype blog post announcement:
💻 Use Cases
Interoperability between ESM and CJS.
TypeScript does not allow CJS to require(ESM), even when it is supported by node.
Have to avoid doing that.
The text was updated successfully, but these errors were encountered: