Microsoft/TypeScript

False positive on destructured `require` is `verbatimModuleSyntax` and `module` is `preserve`

Chiusa

#63.696 aperta il 30 lug 2026

 (1 commento) (0 reazioni) (0 assegnatari)TypeScript (13.395 fork)batch import
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

https://www.typescriptlang.org/play/?moduleResolution=99&target=99&module=199&verbatimModuleSyntax=true&filetype=js#code/PQgEB4CcFMDNpgOwMbVAFwJ4AdoGcBeAIkQHsATaI0YAPgCh7lTE91QBvUGAQ3IDEAlgBs0AX1AFu0AI4BXQTAAUAcjKUAXLDwqAlIwC2FOaIB00AB7ZSkdHknS+Q0fSA

💻 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.

Guida contributor