2014-08-31 15 views
11

Nel mio directory test, Ho un file mocha.opts contenente quanto segue:Mocha ignora l'opzione --harmony in mocha.opts?

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

Quando eseguo mocha, ottengo il seguente errore:

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

Questo è, naturalmente, perché il mio uso di const richiede ES6 Harmony. Quando eseguo mocha --harmony, i miei test vengono eseguiti correttamente. E le altre voci nel mio file mocha.opts funzionano come previsto.

Il file mocha.opts ignora l'argomento --harmony per qualche motivo? O sto sbagliando? I documenti Mocha non vengono elaborati e non sono stato in grado di trovare la risposta qui o altrove.

risposta

18

Il richiedente chiede:

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

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

Sì, mocha.opts ignora l'argomento --harmony. L'opzione --harmony non è un'opzione Mocha, ma un'opzione Node.js. Questa è un'opzione che deve essere passata a Node.js prima dello che inizia l'esecuzione. Tuttavia, mocha.opts viene letto dopo l'avvio di Node.js e quindi anche se Mocha fosse in grado di comprendere l'opzione, non sarebbe in grado di fare nulla al riguardo.

Ma perché funziona sulla riga di comando? Non dovrebbe essere il caso che quando corro mocha --harmony, Mocha deve prima iniziare prima di analizzare l'opzione --harmony? No, perché mocha è uno script che avvia il Mocha "reale". Lo script di shell rileva --harmony e si assicura che venga passato a Node.js quando avvia il Mocha "reale".

+0

Brilliantly spiegato, grazie. – user3112401

+1

Nitpick - mocha è uno script js che chiama il vero Mocha. Non è uno script di shell. – manojlds

+1

mocha potrebbe usare 'execv()' per sostituirsi con "nodo appropriato". Tutti lo fanno sempre. – toriningen

0

Non è supportato come qualcosa che è possibile includere in mocha.opts. Si aggiunge molto alla riga di comando quando si chiama mocha. Vedi this.