12 votes

VSCode ne reconnaît pas les types dans les sous-répertoires

VSCode ne reconnaît pas les types Jest. J'obtiens l'erreur suivante :

Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`  and then add `jest` or `mocha` to the types field in your tsconfig.

J'ai installé @types/jest et a ajouté jest à la types dans mon tsconfig mais cela ne fonctionne pas.

Je remarque cependant que cela ne se produit que pour les sous-répertoires, car j'ai une monorepo avec la structure de fichiers suivante :

 - app1
 - app2
 - app3

Si je n'ouvre que le app1 je n'obtiens alors aucune erreur. Comment puis-je configurer VSCode pour qu'il fonctionne avec un dossier contenant plusieurs projets ?

Je sais que VSCode permet de créer plusieurs espaces de travail, mais ce n'est pas ce que je recherche. Chaque dossier a son propre node_modules et un tsconfig fichier. Je veux juste que VSCode les reconnaisse pour chaque dossier plutôt que de regarder au niveau de la racine pour les node_modules .

J'ai également essayé de créer un tsconfig au niveau de la racine en ajoutant ceci :

{
  "compilerOptions": {
    "typeRoots": ["app1/node_modules/@types", "app2/node_modules/@types"]
  }
}

Mais cela n'a pas fonctionné.

5voto

Eladio Mora Points 109

J'ai eu un problème similaire et mon problème était que j'utilisais "include"/"exclude" dans mon tsconfig.json, ce qui perturbe les types si le fichier n'est pas inclus ou s'il est exclu. J'ai supprimé les deux options et cela fonctionne maintenant sans autre configuration.

Si ce n'est pas votre cas, je vous suggère de jeter un coup d'œil :

https://github.com/Microsoft/vscode/issues/50910#issuecomment-393719145

2voto

Magnus Points 92

Je ne sais pas exactement pourquoi (probablement à cause de la façon dont VSCode fait les choses), mais avec la structure de répertoire suivante :

.
 app1
    index.ts
    node_modules
    package.json
 app2
     index.ts
     node_modules
     package.json

... il semble que ce soit le cas :

  1. Vous pouvez éliminer toutes les plaintes "Module non trouvé" en app1/index.ts , app2/index.ts etc. en ajoutant un tsconfig.json (même s'il ne contient que des crochets vides {} ) dans votre répertoire racine.

  2. Vous pouvez activer l'intellisense dans app1/index.ts en ajoutant un tsconfig.json (même s'il ne contient que des crochets vides). {} ) en app1 , en app2/index.ts en ajoutant un tsconfig.json (même s'il ne contient que des crochets vides). {} ) en app2 , etc.

Je n'aime pas cette "solution". Je préférerais de loin que VSCode trouve les bonnes bibliothèques en ajoutant quelque chose dans .vscode/settings pour l'espace de travail plutôt que pour les fichiers src, mais je ne pense pas que ce soit possible pour le moment. J'ai l'intention de soumettre une demande en ce sens à TypeScript/problèmes .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X