Microsoft/TypeScript
False positive on destructured `require` is `verbatimModuleSyntax` and `module` is `preserve`
Chiusa
#63.696 aperta il 30 lug 2026
BugDomain: ES ModulesHelp Wanted
Metriche repository
- Star
- (108.860 stelle)
- Metriche merge PR
- (Merge medio 6g 17h) (9 PR mergiate in 30 g)
Descrizione
🔎 Search Terms
verbatimModuleSyntax destructure
🕗 Version & Regression Information
- This changed between versions 5.5 and 5.6.
⏯ Playground Link
💻 Code
// file.cjs
const { readFile } = require('node:fs')
// tsconfig.json
{
"compilerOptions": {
"checkJs": true,
"module": "preserve",
"noEmit": true,
"skipLibCheck": true,
"target": "esnext",
"types": ["node"],
"verbatimModuleSyntax": true,
}
}
🙁 Actual behavior
When verbatimModuleSyntax is enabled and module is set to preserve, TypeScript disallows destructuring of a required module in CommonJS JavaScript.
$ tsc
changed 1 package in 544ms
file.cjs:1:9 - error TS1293: ESM syntax is not allowed in a CommonJS module when 'module' is set to 'preserve'.
1 const { readFile } = require('node:fs')
~~~~~~~~
Found 1 error in file.cjs:1
🙂 Expected behavior
No errors
Additional information about the issue
I could not reproduce this in the playground, because ATA is broken.