2014-08-31 4 views
11

In meinem Test-Verzeichnis habe ich eine Datei mocha.opts mit folgendem Inhalt:Schaltet Mocha die Option --harmony in mocha.opts aus?

--harmony 
--recursive 
--growl 
--reporter spec 
--require should 

Als ich mocha laufen, bekomme ich folgende Fehlermeldung:

/project/server/utilities/encryption.js:3 
const 
^^^^^ 
SyntaxError: Use of const in strict mode. 

Dies ist natürlich, weil mein Einsatz von const erfordert ES6 Harmony. Wenn ich mocha --harmony ausführen, führen meine Tests gut aus. Und die anderen Einträge in meiner mocha.opts Datei funktionieren wie erwartet.

Schaltet die Datei mocha.opts das Argument --harmony aus irgendeinem Grund aus? Oder mache ich es falsch? Die Mocha-Dokumente werden nicht ausgearbeitet und ich konnte weder hier noch irgendwo anders die Antwort finden.

Antwort

18

Der Fragesteller fragt:

When I run mocha --harmony , my tests execute just fine. [...]

Does the mocha.opts file ignore the --harmony argument for some reason?

Ja, mocha.opts ignoriert das --harmony Argument. Die Option --harmony ist keine Mocha-Option, sondern eine Node.js-Option. Dies ist eine Option, die an Node.js übergeben werden muss vor es beginnt mit der Ausführung. mocha.opts wird jedoch gelesen, nachdem Node.js gestartet wurde, und selbst wenn Mocha die Option verstehen konnte, konnte sie nichts dagegen tun.

Aber warum funktioniert es in der Befehlszeile? Sollte es nicht der Fall sein, dass, wenn ich mocha --harmony ausführen, muss Mocha zuerst vor der Analyse der --harmony Option starten? Nein, denn mocha ist ein Skript, das den "echten" Mocha startet. Das Shell-Skript erkennt --harmony und stellt sicher, dass es an Node.js übergeben wird, wenn es den "echten" Mocha startet.

+0

Brillant erklärt, danke. – user3112401

+1

Nitpick - mocha ist ein js-Skript, das den echten Mocha nennt. Es ist kein Shell-Skript. – manojlds

+1

mocha könnte 'execv()' verwenden, um sich durch "richtigen Knoten" zu ersetzen. Jeder macht das die ganze Zeit. – toriningen

0

Es ist keine Unterstützung als etwas, das Sie in mocha.opts einschließen können. Sie fügen viel in die Befehlszeile hinzu, wenn Sie mocha aufrufen. Siehe this.

Verwandte Themen