En mi directorio de prueba, tengo un archivo mocha.opts que contiene lo siguiente:

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

Cuando ejecuto mocha, aparece el siguiente error:

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

Esto es, por supuesto, porque mi uso de const requiere ES6 Harmony. Cuando ejecuto mocha --harmony, mis pruebas se ejecutan bien. Y las otras entradas en mi archivo mocha.opts funcionan como se esperaba.

¿El archivo mocha.opts ignora el argumento --harmony por alguna razón? ¿O lo estoy haciendo mal? Los documentos de Mocha no dan más detalles y no he podido encontrar la respuesta aquí ni en ningún otro lado.

11
user3112401 31 ago. 2014 a las 19:19

2 respuestas

La mejor respuesta

La preguntadora pregunta:

Cuando ejecuto mocha --harmony, mis pruebas se ejecutan bien. [...]

¿El archivo mocha.opts ignora el argumento --harmony por alguna razón?

Sí, mocha.opts ignora el argumento --harmony. La opción --harmony no es una opción Mocha sino una opción Node.js. Esta es una opción que debe pasarse a Node.js antes de que comience a ejecutarse. Sin embargo, mocha.opts se lee después de que Node.js ha comenzado, por lo que incluso si Mocha pudiera entender la opción, no podría hacer nada al respecto.

Pero, ¿por qué funciona en la línea de comando? ¿No debería ser el caso de que cuando ejecuto mocha --harmony, Mocha tiene que comenzar primero antes de analizar la opción --harmony? No, porque mocha es un script que inicia el Mocha "real". El script de shell detecta --harmony y se asegura de que se pasa a Node.js cuando inicia el Mocha "real".

18
Community 20 jun. 2020 a las 09:12

No es compatible como algo que puede incluir en mocha.opts. Usted agrega mucho a la línea de comando cuando llama a mocha. Consulte esto.

0
neverfox 7 ene. 2015 a las 03:35