Mam problemy z uruchomieniem Mocha zgodnie z oczekiwaniami i chciałbym powiedzieć, że jest to udokumentowane, ale (wydaje się) nie ma zbyt dużej dokumentacji na temat faktycznego uruchomienia.
Zainstalowałem go używając npm
(zarówno globalnie, jak i lokalnie) i za każdym razem, gdy go uruchamiam, otrzymuję:
$ mocha
mocha: command not found
Ok, więc pomyślałem, że nie ma go w moim PATH
, więc spróbowałem uruchomić go bezpośrednio,
$ ./node_modules/mocha/bin/mocha
execvp(): No such file or directory
W końcu spróbowałem trafić w inny bin
plik i otrzymałem:
$ ./node_modules/mocha/bin/_mocha
path.existsSync is deprecated. It is now called `fs.existsSync`.
.
✔ 1 tests complete (1ms)
Jak mogę po prostu wykonać testy za pomocą jednego polecenia? Ślubowanie wydaje się na to pozwalać, ale słyszałem, że Mocha jest lepszym wyborem, po prostu nie mogę sprawić, by działała poprawnie.
Jakieś przemyślenia na temat błędu, który przedstawiłem powyżej w trzeciej próbie?
Edytować:
Biegnę,
- Ubuntu 11.10 64-bitowy
- Node.js 0.7.5
- npm 1.1.8
- mokka 0.14.1
- powinno 0.6.0
npm install mocha
, otrzymuję./node_modules/.bin/mocha
zgodnie z oczekiwaniami.sudo npm install -g mocha
dostaje mnie/usr/local/bin/mocha
. Jeśli to nie działa poprawnie w twoim środowisku, może to być błąd lub po prostu mokka nie została zaktualizowana do obsługi węzła 0.7. *. Jeśli chodzi o Twoje ostrzeżenie amortyzacyjne,exists
aexistsSync
zostały przeniesione zpath
abyfs
w węźle 0.7.1.Odpowiedzi:
od npm 5.2.0 jest nowe polecenie „npx” dołączone do npm, które znacznie upraszcza to, jeśli uruchomisz:
Uwaga: opcjonalne argumenty są przekazywane do wykonywanego polecenia (w tym przypadku mokka)
to automatycznie wybierze wykonywalne polecenie „mokka” z lokalnie zainstalowanej mokki (zawsze dodawaj je jako zależność dev, aby mieć pewność, że poprawne będzie zawsze używane przez Ciebie i wszystkich innych).
Uważaj jednak, jeśli nie zainstalowałeś mokki, to polecenie automatycznie pobierze i użyje najnowszej wersji, co jest świetne dla niektórych narzędzi (na przykład rusztowań), ale może nie być najbardziej zalecane w przypadku niektórych zależności, w których możesz chcieć przypiąć do określonej wersji.
Możesz przeczytać więcej o npx tutaj
Teraz, jeśli zamiast bezpośrednio wywoływać mokkę, chcesz zdefiniować niestandardowy skrypt npm, alias, który może wywoływać inne pliki binarne npm ...
nie chcesz, aby testy biblioteki kończyły się niepowodzeniem w zależności od konfiguracji maszyny (mokka jako globalna, globalna wersja mokka itp.), sposób korzystania z lokalnej mokki działającej na wielu platformach to:
npm umieszcza aliasy we wszystkich plikach binarnych w zależnościach od tego specjalnego folderu. Na koniec npm automatycznie doda node_modules / .bin do PATH podczas uruchamiania skryptu npm, więc w pliku package.json możesz po prostu:
"scripts": { "test": "mocha" }
i wywołaj go za pomocą
źródło
/node_modules/.bin/{module-binary-name}
jest to miejsce, w którym npm umieszcza skróty do plików binarnych w twoich zależnościach, nie powinieneś odwoływać się bezpośrednio do pliku w źródłach zależności, ponieważ może to zepsuć się w następnej wersji.Po dalszym przeczytaniu i potwierdzeniu przez Linusa G Thiela powyżej stwierdziłem, że po prostu muszę,
./node_modules/.bin
do mojegoPATH
źródło
Dla Windowsa :
"scripts": { "start": "nodemon app.js", "test": "mocha" },
następnie uruchom polecenie
źródło
Podczas instalacji modułów węzłów dla mokki wypróbowałem poniższe polecenia
i podczas uruchamiania lub wykonywania testu mokki, który próbowałem
ale otrzymywałem poniższy błąd jako:
„Mocha” nie jest rozpoznawana jako polecenie wewnętrzne ani zewnętrzne
Tak więc, po wypróbowaniu wszystkiego, co wyszło, po prostu ustaw ścieżkę do zmiennych środowiskowych w Zmienne systemowe jako:
C: \ Pliki programów \ nodejs \
i zadziałało :)
źródło