web-dev-qa-db-fra.com

Comment forcer tsc à ignorer le dossier node_modules?

J'utilise des tâches de construction tsc. Malheureusement, je reçois toujours les mêmes erreurs du dossier des modules de nœuds

Executing task: .\node_modules\.bin\tsc.cmd --watch -p .\tsconfig.json <
node_modules/@types/node/index.d.ts(6208,55): error TS2304: Cannot find name 'Map'.
node_modules/@types/node/index.d.ts(6215,55): error TS2304: Cannot find name 'Set'.
node_modules/@types/node/index.d.ts(6219,64): error TS2304: Cannot find name 'Symbol'.
node_modules/@types/node/index.d.ts(6225,59): error TS2304: Cannot find name 'WeakMap'.
node_modules/@types/node/index.d.ts(6226,59): error TS2304: Cannot find name 'WeakSet'.
10:13:18 - Compilation complete. Watching for file changes.

J'ai déjà ajouté le répertoire à l'ignorer sur tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "strict": false,
    "noImplicitAny": false,
    "strictPropertyInitialization": false,
    "esModuleInterop": true,
  },
  "include": [
    "src/*"
  ],
  "exclude": [
    "node_modules",
    "./node_modules",
    "./node_modules/*",
    "./node_modules/@types/node/index.d.ts",
  ]
}

Qu'est-ce que je fais mal? Que dois-je faire pour ignorer ces erreurs?

J'utilise VsCode et tsc version 2.9.2

32
Daniel Santos

Quickfix est de sauter la vérification

{
  "compilerOptions": {
    "skipLibCheck": true
  },
}
6
Daniel Swiegers

Ajoutez une option "types" vide dans "options de compilation":

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "strict": false,
    "noImplicitAny": false,
    "strictPropertyInitialization": false,
    "esModuleInterop": true,
    "types": []
  },
  "include": [
    "src/*"
  ],
  "exclude": [
    "node_modules",
    "./node_modules",
    "./node_modules/*",
    "./node_modules/@types/node/index.d.ts",
  ]
}

De https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

@types, typeRoots et types

Par défaut, tous les packages "@types" visibles sont inclus dans votre compilation. Les packages des types node_modules/@ de tout dossier englobant sont considérés comme visibles; en particulier, cela signifie les packages dans ./node_modules/@types/, ../node_modules/@types/, ../../node_modules/@types/, etc.

...

Spécifiez "types": [] pour désactiver l'inclusion automatique des packages @types.

Gardez à l'esprit que l'inclusion automatique n'est importante que si vous utilisez des fichiers avec des déclarations globales (par opposition aux fichiers déclarés en tant que modules). Si vous utilisez une instruction d'importation "foo", par exemple, TypeScript peut toujours parcourir les dossiers node_modules & node_modules/@ types pour trouver le package foo

2
Mic