microsoft/TypeScript
View on GitHubFalse positive on destructured `require` is `verbatimModuleSyntax` and `module` is `preserve`
Open
#63,696 opened on Jul 30, 2026
BugHelp Wanted
Repository metrics
- Stars
- (108,860 stars)
- PR merge metrics
- (Avg merge 6d 17h) (9 merged PRs in 30d)
Description
🔎 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.