Microsoft/TypeScript
False positive on destructured `require` is `verbatimModuleSyntax` and `module` is `preserve`
已关闭
#63,696 创建于 2026年7月30日
BugDomain: ES ModulesHelp Wanted
仓库指标
- 星标
- (108,860 个星标)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 9 个 PR)
描述
🔎 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.