2013-11-23 13 views
16

Ich dachte immer, dass npm test Befehl startet nur, was ich in package.json schreiben würde innerhalb Skripte: {test: ...} Abschnitt. Aber ich habe diesen seltsamen Bug, wenn es nicht funktioniert.Wie funktioniert "npm test"?

Also, ich habe dieses Stück config in package.json

"scripts": { 
    "start": "node index.js", 
    "test": "mocha tests/spec.js" 
} 

Wenn ich versuche, Tests ausführen ich npm test in Terminal eingeben und hatte diesen Fehler:

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'commander' 

Aber alles ist in Ordnung, wenn ich nur mocha tests/spec.js eintippe. Irgendwelche Ideen warum ist das?

UPDATE:

Ich habe versucht, Kommandant zu installieren und ich hatte einen Fehler kann nicht Modul 'Glob' finden. Nach der Installation von glob Ich habe Fehler: nicht Modul finden ‚../‘

Aber eigentlich Frage ist, warum habe ich diese Fehler und warum ist alles in Ordnung, wenn mocha tests/spec.js läuft?

+1

Wo ist Commander in Ihrem Dateisystem installiert? – rninty

+0

Es ruft den Befehl auf, der in der scripts.test -Eigenschaft von package.json angegeben ist, aber es richtet auch bestimmte Umgebungsvariablen ein, z. B. PATH, sodass Sie auf Befehle verweisen können, die nur im Verzeichnis node_modules vorhanden sind, aber nicht global installiert sind. – Brandon

+0

Stelle sicher, dass du commander.json und 'npm install' hinzufügst:) –

Antwort

10

Möglicherweise sind zwei Versionen von Mocha installiert: eine global (npm install -g mocha) und eine lokal, die anscheinend defekt ist.

Wenn Sie ein Skript durch npm, entweder als npm run-script <name> oder mit einer definierten Verknüpfung wie npm test oder npm start laufen, Ihr aktuelles bin Verzeichnis des Paketverzeichnis befindet sich auf der Vorderseite des Weg gelegt. Für Ihr Paket ist das wahrscheinlich ./node_modules/.bin/, das einen Link zum ausführbaren Skript mocha Ihres Pakets enthält.

Sie können sich wahrscheinlich dieses Problem beheben, indem Sie den lokalen Mokka zu entfernen und durch --save-dev Neuinstallation:

rm -rf node_modules/mocha npm install --save-dev mocha

Das sollten Sie über eine funktionierende lokale Kopie von Mokka bekommen mit all ihren Abhängigkeiten (Kommandant etc .) Eingerichtet.

+0

Danke! Ich habe diese Antwort gefunden, weil 'npm help test' sagt:' Dies führt das "Test" -Skript eines Pakets aus, wenn eines zur Verfügung gestellt wurde. Aber es sagt nicht, wo das "Test" -Skript im Dateisystem ist! Gut zu wissen, dass es in meinem "bin-Verzeichnis" des aktuellen Paketverzeichnisses ist, wie Sie hier sagen! –

Verwandte Themen