Microsoft/TypeScript

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

Fechada

#63.696 aberto em 30 de jul. de 2026

 (1 comentário) (0 reação) (0 responsável)TypeScript (13.395 forks)batch import
BugDomain: ES ModulesHelp Wanted

Métricas do repositório

Stars
 (108.860 estrelas)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)

Description

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

Guia do colaborador