2015-11-08 11 views
28

Ho appena installato WebStorm 11 e ha creato un nuovo progetto, tuttavia WebStorm sta dicendo che un require() è necessario per il metodo describe:Mocha di descrivere "require() manca" in WebStorm 11

require() call is missing

Ho aggiunto la libreria mocha di tipi definitivi e l'ambito è per la directory di test (in cui si trova questo file).

risposta

7

Questa è una nuova ispezione introdotta in v. 11 - controlla se il modulo utilizzato nel codice è referenziato attraverso l'istruzione require(). Questa ispezione, infatti, è ridondante per i test di moka ('Descrivi' e altre cose non hanno bisogno di essere richieste esplicitamente in quanto vengono aggiunte all'ambito globale da Mocha). Puoi disabilitare questa ispezione o sopprimerla per "descrivi", "it", ecc. (Vedi https://www.jetbrains.com/webstorm/help/suppressing-inspections.html). Un'altra opzione: creare un ambito personalizzato con i file spec esclusi (Impostazioni/Aspetto & Comportamento/Ambiti), quindi selezionare questo ambito per l'ispezione 'Missing require() statement' (Impostazioni/Editor/Ispezioni/Javascript/Node.js).

biglietto correlati: WEB-18768

+0

"È possibile disattivare questa ispezione o sopprimerla per" descrivi "," it ", ecc." - per favore, elabora. – arcseldon

+1

https://www.jetbrains.com/phpstorm/help/disabling-and-enabling-inspections.html - quindi preferenze -> Editor -> Ispezioni -> JavaScript -> Node.js -> Istruzione require() mancante Quindi come aggiungo soppressioni come 'Descrivi', 'E' ecc.? – arcseldon

+0

L'unico modo per farlo funzionare era con un ambito personalizzato, nel mio caso, scegliendo la mia cartella di prova e selezionando includi ricorsivamente, quindi associando quell'ambito con la regola di ispezione specificata (e decidendo di disattivare completamente la regola per quell'ambito). Non ho trovato alcun modo per adattare abilmente la regola di ispezione stessa per ignorare una lista nera di elementi, ad es. descrivi, ecc. che possono essere considerati globali. Per favore qualcuno può lasciare un commento qui se esiste un tale approccio (usando Webstorm 11.0.3) – arcseldon

77

Edit: Come notato nei commenti, il problema effettivo affrontato in questa domanda è in realtà un bug in IntelliJ 15/WebStorm 11 (vedi https://youtrack.jetbrains.com/issue/WEB-18768). Lascio la risposta qui sotto perché molte persone vengono qui quando cercano la soluzione fornita.

La risposta accettata è un approccio mendicante per risolvere il problema. Una soluzione migliore è abilitare la libreria mocha-DefinitelyTyped per la directory di test. Non solo rimuoverà l'ispezione errata, ma fornirà una migliore evidenziazione della sintassi.

Dalla descrizione dell'ispezione:

Quando si utilizzano le librerie che definiscono i propri simboli globali al di fuori loro codice JavaScript visibile (ad es describe() in Mocha), è consigliabile aggiungere il tipo dattiloscritto corrispondente definizione file come libreria JavaScript in Preferenze | Lingue & Strutture | JavaScript | Biblioteche.

Passare alla sezione delle preferenze di cui sopra, 'Preferenze | Lingue & Strutture | JavaScript | Librerie e controlla se la libreria mocha-DefinitelyTyped è presente nell'elenco.

Se moka-DefinitelyTyped non è nella lista, fare clic sul pulsante Download…, trovare 'moka' nella sezione 'dattiloscritto comunità stub', selezionarla e fare clic su Scarica e Installa:

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

La libreria è denominata solo "mocha" nell'elenco, ma verrà convertita in "mocha-DefinitelyTyped" una volta importata.

Una volta definito mocha-DefinitelyTyped, deselezionare la casella di controllo Abilitato. Lasciandolo completamente controllato l'abiliterebbe globalmente, anche al di fuori dei test, che sarebbe inaccurato. Invece, gestiremo il suo ambito per essere abilitato solo nella directory di test. Fare clic sul pulsante Manage Scopes…, trovare la directory di test, fare clic sulla colonna Libreria e selezionare la voce 'mocha-DefinitelyTyped'. Guarda lo screenshot qui sotto.

screenshot of the JavaScript Libraries Usage Scopes preferences window

+1

Questo è sorprendente. C'è uno strumento per scaricare tipizzazioni di dipendenza come questo in una cartella globale? Ho creato una directory 'typings' globale che sto facendo riferimento a WebStorm ora, ma richiede 1-2 minuti per dipendenza da configurare. – Brian

+0

@ Brian, non ci credo. IntelliJ li scarica nella propria cache, ma li gestisce per progetto. – BamaPookie

+1

@BamaPookie Attualmente ho tipizzazioni comuni in una directory esterna al progetto. So che ho bisogno di fare riferimento a quella directory in ogni progetto manualmente. Scrivendo uno strumento per passare attraverso le dipendenze, controllando se i loro tipi di dattilografia esistono nella tua directory di battitura e scaricando quelli che non potrebbero essere un bel progetto. Ho guardato e non vedo niente del genere in giro. Dovrebbe essere un modulo globale che potresti eseguire per ogni progetto. – Brian

0

Non ci sono attualmente un bug in WebStorm 2017,3 che impedisce l'installazione di librerie JavaScript attraverso le ‘Preferenze | Lingue & Strutture | JavaScript | Librerie | Scarica e installa il metodo.

Viene tracciato qui e l'ultimo EAP (Early Access Preview), (Webstorm 2017.3.2 al momento della stesura di questo articolo) risolve il problema. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

Ho sbattuto la testa contro il muro per ore, sperando che questo aiuti qualcun altro.