Microsoft/TypeScript

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

Geschlossen

#63.696 geöffnet am 30.07.2026

 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (13.395 Forks)batch import
BugDomain: ES ModulesHelp Wanted

Repository-Metriken

Stars
 (108.860 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

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

Contributor Guide