web-dev-qa-db-fra.com

Mocha décrit "require () est manquant" dans WebStorm 11

Je viens d'installer WebStorm 11 et de créer un nouveau projet, mais WebStorm dit qu'une require() est nécessaire pour la méthode describe:

require() call is missing

J'ai ajouté la bibliothèque mocha certainement-types et la portée est pour le répertoire de test (dans lequel se trouve ce fichier).

29
BanksySan

Edit: Comme indiqué dans les commentaires, le problème réel abordé dans cette question est en fait un bogue dans IntelliJ 15/WebStorm 11 (voir https://youtrack.jetbrains.com/issue/WEB-18768 ) . Je laisse la réponse ci-dessous parce que beaucoup de gens viennent ici pour chercher la solution fournie.

La réponse acceptée est une approche à coups de marteau pour résoudre le problème. Une meilleure solution consiste à activer la bibliothèque mocha-DefinitelyTyped pour le répertoire de test. Non seulement cela supprimera l'inspection erronée, mais il fournira une meilleure mise en évidence de la syntaxe.

D'après la description de l'inspection:

Lorsque vous utilisez des bibliothèques qui définissent leurs propres symboles globaux en dehors de leur code JavaScript visible (par exemple describe() dans Mocha), il est recommandé d'ajouter le fichier de définition de type TypeScript correspondant en tant que bibliothèque JavaScript dans Préférences | Langues et cadres | JavaScript | Bibliothèques.

Accédez à la section des préférences référencée ci-dessus, "Préférences | Langues et cadres | JavaScript | Bibliothèques "et vérifiez si la bibliothèque mocha-DefinitelyTyped figure dans la liste.

Si @types/mocha (anciennement nommé mocha-DefinitelyTyped) ne figure pas dans la liste, cliquez sur Download…, recherchez "mocha" dans la section "Stubs de la communauté TypeScript", sélectionnez-le, puis cliquez sur Télécharger et installer:

‘mocha’ library to import, shown in the Download Library window

La bibliothèque est nommée simplement mocha dans la liste, mais sera convertie en @types/mocha (avant début 2019, il se convertirait en mocha-DefinitelyTyped) une fois importé.

Une fois que vous avez mocha-DefinitelyTyped, décochez sa case Activé. Le laisser entièrement vérifié le permettrait globalement, même en dehors des tests, ce qui serait inexact. Au lieu de cela, nous gérerons sa portée pour qu'elle ne soit activée que dans votre répertoire de test. Clique le Manage Scopes…, trouvez votre répertoire de test, cliquez sur la colonne Bibliothèque et sélectionnez l'entrée ‘mocha-DefinitelyTyped’. Voir la capture d'écran ci-dessous.

screenshot of the JavaScript Libraries Usage Scopes preferences window

98
BamaPookie

Il s'agit d'une nouvelle inspection introduite dans la version 11 - elle vérifie si le module utilisé dans le code est référencé via l'instruction require (). Cette inspection, en effet, est redondante pour les tests de moka ("décrire" et d'autres éléments n'ont pas besoin d'être explicitement requis car ils sont ajoutés à la portée globale par Mocha). Vous pouvez soit désactiver cette inspection, soit la supprimer pour 'décrire', 'cela', etc. (voir https://www.jetbrains.com/webstorm/help/suppressing-inspections.html ). Une autre option: créez une étendue personnalisée avec vos fichiers de spécifications exclus (Paramètres/Apparence et comportement/Étendues), puis choisissez cette étendue pour l'inspection `` Instruction Missing require () '' (Paramètres/Éditeur/Inspections/Javascript/Node.js).

Ticket associé: WEB-18768

10
lena

Il existe actuellement un bogue dans Webstorm 2017.3 qui empêche l'installation de bibliothèques Javascript via le menu "Préférences | Langues et cadres | JavaScript | Bibliothèques | Télécharger et installer ".

Il est suivi ici et le dernier EAP (Early Access Preview) (Webstorm 2017.3.2 au moment de la rédaction) résout le problème. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

Je me suis cogné la tête contre le mur pendant des heures, j'espère que cela aide quelqu'un d'autre.

1
Dominic Cerquetti

Si vous avez déjà installé mocha globalement et s'il ne fonctionne toujours pas, essayez de supprimer toutes les configurations d'exécution/débogage.

Il mettra à jour npm runner et j'espère qu'il résoudra le problème.

enter image description here

0
Oleg