2015-11-08 16 views
28

Właśnie zainstalowano WebStorm 11 i stworzył nowy projekt, jednak WebStorm mówi, że require() jest potrzebna dla metody describe:Mocha opisują "require() brakuje" w WebStorm 11

require() call is missing

Dodałem bibliotekę mocha zdecydowanie-typy, a zakres dotyczy katalogu testowego (w którym znajduje się ten plik).

Odpowiedz

7

Jest to nowa inspekcja wprowadzona w v. 11 - sprawdza, czy moduł używany w kodzie odwołuje się za pomocą instrukcji require(). Ta kontrola jest w istocie zbędna w przypadku testów mokka ("opisać" i inne rzeczy nie muszą być wyraźnie wymagane, ponieważ są dodawane do zakresu globalnego przez firmę Mocha). Możesz wyłączyć tę inspekcję lub wyłączyć ją dla "opisz", "to", itp. (Patrz https://www.jetbrains.com/webstorm/help/suppressing-inspections.html). Inna opcja: utwórz niestandardowy zakres z wykluczonymi plikami spec (Ustawienia/wygląd & Zachowanie/zakresy), a następnie wybierz ten zakres dla kontroli "Brak instrukcji require()" (Ustawienia/Edytor/Inspekcje/Javascript/Node.js).

Powiązane bilet: WEB-18768

+0

"Możesz wyłączyć tę inspekcję lub wyłączyć ją dla" opisz "," to "itd." - proszę o szczegóły. – arcseldon

+1

https://www.jetbrains.com/phpstorm/help/disabling-and-illing-inspections.html - więc preferencje -> Edytor -> Inspekcje -> JavaScript -> Node.js -> Brakujące zapytanie require() To jak czy dodaję jakieś tłumienia, takie jak "opisz", "to" itp.? – arcseldon

+0

Jedyny sposób, w jaki mogłem to wykonać, to z niestandardowym zakresem, w moim przypadku, wybieraniem folderu testowego i wyborem rekurencyjnie, a następnie kojarzenia tego zakresu z daną zasadą inspekcji (i wybierania całkowitego wyłączenia tej reguły dla tego zakresu). Nie znalazłem sposobu na sprytne dostosowanie samej reguły inspekcji, aby zignorować czarną listę przedmiotów, np. opisać, itp., które można uznać za globalne. Czy ktoś może zostawić komentarz tutaj, jeśli takie podejście istnieje (przy użyciu Webstorm 11.0.3) – arcseldon

77

Edit: Jak zauważył w komentarzach, rzeczywisty problem został rozwiązany w tej kwestii jest rzeczywiście błąd w IntelliJ 15/WebStorm 11 (patrz https://youtrack.jetbrains.com/issue/WEB-18768). Pozostawiam odpowiedź poniżej, ponieważ wiele osób przychodzi tutaj, szukając dostarczonego rozwiązania.

Przyjęta odpowiedź to podejście do rozwiązania problemu. Lepszym rozwiązaniem jest włączenie biblioteki mocha-DefinitelyTyped dla katalogu testowego. Nie tylko usunie to błędną inspekcję, zapewni lepsze podświetlanie składni.

Z opisu inspekcji:

Przy użyciu bibliotek, które definiują swoje własne symbole globalne poza ich widocznego kodu JavaScript (np describe() w Mocha), to Zaleca się, aby dodać odpowiedni typ maszynopis definicja plik jako biblioteka JavaScript w Preferencje | Języki & Konstrukcje szkieletowe | JavaScript | Biblioteki.

Przejdź do sekcji preferencji, o której mowa powyżej, "Preferencje | Języki & Konstrukcje szkieletowe | JavaScript | Biblioteki i sprawdź, czy biblioteka mocha-DefinitelyTyped znajduje się na liście.

Jeśli mokka-DefinitelyTyped nie ma na liście, kliknij przycisk Download…, znaleźć 'mocha' w sekcji 'maszynopis Społeczność Stubs', zaznacz go i kliknij Pobierz i zainstaluj:

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

Biblioteka nazywa się po prostu "mocha" na liście, ale po zaimportowaniu zostanie przekształcona w "mocha-DefinitelyTyped".

Gdy już masz mocha-ZdecydowanieTypowe, odznacz pole Włączone. Pozostawienie go w pełni sprawdzonego umożliwiłoby to globalne, nawet poza testami, co byłoby niedokładne. Zamiast tego będziemy zarządzać jego zasięgiem tylko w twoim katalogu testowym. Kliknij przycisk Manage Scopes…, znajdź swój katalog testowy, kliknij kolumnę Biblioteka i wybierz pozycję "mocha-DefinitelyTyped". Zobacz zrzut ekranu poniżej.

screenshot of the JavaScript Libraries Usage Scopes preferences window

+1

To jest niesamowite. Czy istnieje narzędzie do pobierania typów zależności takich jak ten do folderu globalnego? Założyłem globalny katalog 'typings', do którego odwołuję się teraz z WebStorm, ale konfiguracja wymaga 1-2 minut na zależność. – Brian

+0

@Brian, nie wierzę w to. IntelliJ pobiera je do własnej pamięci podręcznej, ale zarządza nimi przez projekt. – BamaPookie

+1

@ BamaPookie Obecnie mam typowe wpisy w katalogu poza projektem. Wiem, że muszę ręcznie odwoływać się do tego katalogu w każdym projekcie. Napisanie narzędzia, aby przejść przez swoje zależności, sprawdzanie, czy ich typy istnieją w katalogu typowań, a pobieranie tych, które nie są, może być całkiem fajnym projektem. Patrzyłem i nie widziałem czegoś takiego w pobliżu. Musiałby to być globalny moduł, który można uruchomić dla każdego projektu. – Brian

0

Obecnie istnieje błąd w Webstorm 2017.3, który uniemożliwia instalację bibliotek Javascript poprzez „Preferencje | Języki & Konstrukcje szkieletowe | JavaScript | Biblioteki | Pobierz i zainstaluj "Metoda.

To jest śledzone tutaj, a najnowszy EAP (Early Access Preview), (Webstorm 2017.3.2 w chwili pisania tego artykułu) rozwiązuje ten problem. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

Przez kilka godzin uderzałem głową o ścianę, mam nadzieję, że to pomoże komuś innemu.