Ich habe Probleme, Mocha wie erwartet zum Laufen zu bringen, und ich würde gerne sagen, wie dokumentiert, aber es scheint nicht viel Dokumentation darüber zu geben, wie man das Ding tatsächlich zum Laufen bringt.
Ich habe es mit npm
(sowohl global als auch lokal) installiert und jedes Mal, wenn ich es ausführe, bekomme ich:
$ mocha
mocha: command not found
Ok, also dachte ich, dass es nicht in meinem ist PATH
, also habe ich versucht, es direkt auszuführen.
$ ./node_modules/mocha/bin/mocha
execvp(): No such file or directory
Schließlich versuchte ich, die andere bin
Datei zu treffen , und bekam,
$ ./node_modules/mocha/bin/_mocha
path.existsSync is deprecated. It is now called `fs.existsSync`.
.
✔ 1 tests complete (1ms)
Wie kann ich meine Tests nur mit einem einzigen Befehl ausführen? Gelübde scheinen es zuzulassen, aber ich habe gehört, dass Mokka die bessere Wahl ist. Ich kann es einfach nicht richtig zum Laufen bringen.
Und irgendwelche Gedanken zu dem Fehler, den ich oben bei meinem dritten Versuch bekommen habe?
Bearbeiten:
Ich renne,
- Ubuntu 11.10 64-Bit
- Node.js 0.7.5
- npm 1.1.8
- Mokka 0.14.1
- sollte 0.6.0
npm install mocha
ich./node_modules/.bin/mocha
wie erwartet.sudo npm install -g mocha
bekommt mir/usr/local/bin/mocha
. Wenn dies in Ihrer Umgebung nicht richtig funktioniert, liegt möglicherweise ein Fehler vor oder der Mokka wurde nicht aktualisiert, um Knoten 0.7 zu unterstützen. *. In Bezug auf Ihre Verfallswarnungexists
undexistsSync
wurden von in Knoten 0.7.1 vonpath
nachfs
verschoben.Antworten:
Seit npm 5.2.0 ist in npm ein neuer Befehl "npx" enthalten, der dies viel einfacher macht, wenn Sie Folgendes ausführen:
Hinweis: Die optionalen Argumente werden an den ausgeführten Befehl weitergeleitet (in diesem Fall Mokka).
Dadurch wird automatisch der ausführbare Befehl "Mokka" aus Ihrem lokal installierten Mokka ausgewählt (fügen Sie ihn immer als Entwicklungsabhängigkeit hinzu, um sicherzustellen, dass der richtige Befehl immer von Ihnen und allen anderen verwendet wird).
Beachten Sie jedoch, dass dieser Befehl, wenn Sie Mokka nicht installiert haben, automatisch die neueste Version abruft und verwendet. Dies ist für einige Tools (z. B. Gerüste) ideal, für bestimmte Abhängigkeiten jedoch möglicherweise nicht besonders empfehlenswert Pin auf eine bestimmte Version.
Sie können mehr über npx lesen hier
Wenn Sie nun nicht direkt Mokka aufrufen möchten, sondern ein benutzerdefiniertes npm-Skript definieren möchten, einen Alias, der möglicherweise andere npm-Binärdateien aufruft ...
Sie möchten nicht, dass Ihre Bibliothekstests je nach Maschinen-Setup (Mokka als globale, globale Mokka-Version usw.) fehlschlagen. Die Verwendung des lokalen Mokkas, der plattformübergreifend funktioniert, ist folgende:
npm fügt Aliase zu allen Binärdateien in Ihren Abhängigkeiten von diesem speziellen Ordner hinzu. Schließlich fügt npm beim Ausführen eines npm-Skripts automatisch node_modules / .bin zum PATH hinzu, sodass Sie in Ihrer package.json Folgendes tun können:
und rufe es mit auf
quelle
/node_modules/.bin/{module-binary-name}
ist der Ort, an dem npm Verknüpfungen zu Binärdateien in Ihren Abhängigkeiten einfügt. Sie sollten nicht direkt auf eine Datei in den Quellen einer Abhängigkeit verweisen, da dies bei der nächsten Version möglicherweise nicht funktioniert .Nach weiterer Lektüre und Bestätigung durch Linus G Thiel oben stellte ich fest, dass ich einfach musste,
./node_modules/.bin
Zu meinem hinzufügenPATH
quelle
Für Windows :
Führen Sie dann den Befehl aus
quelle
Während der Installation der Knotenmodule für Mokka hatte ich die folgenden Befehle ausprobiert
und beim Ausführen oder Ausführen des Mokka-Tests habe ich versucht
aber ich bekam den folgenden Fehler als:
'Mokka' wird nicht als interner oder externer Befehl erkannt
Nachdem Sie alles ausprobiert hatten, stellte sich heraus, dass der Pfad zu den Umgebungsvariablen unter den Systemvariablen wie folgt festgelegt wurde:
C: \ Programme \ nodejs \
und es hat funktioniert :)
quelle