Tengo problemas para hacer que Mocha funcione como se esperaba, y me encantaría decirlo como está documentado, pero (parece) que no hay mucha documentación sobre cómo hacer que funcione.
Lo instalé usando npm
(tanto global como localmente), y cada vez que lo ejecuto obtengo:
$ mocha
mocha: command not found
Ok, pensé que no estaba en mi PATH
, así que intenté ejecutarlo directamente,
$ ./node_modules/mocha/bin/mocha
execvp(): No such file or directory
Finalmente, intenté presionar el otro bin
archivo y obtuve,
$ ./node_modules/mocha/bin/_mocha
path.existsSync is deprecated. It is now called `fs.existsSync`.
.
✔ 1 tests complete (1ms)
¿Cómo puedo ejecutar mis pruebas con un solo comando? Vows parece permitirte, pero he escuchado que Mocha es la mejor opción, simplemente parece que no puedo hacer que funcione correctamente.
¿Y alguna idea sobre el error que obtuve en mi tercer intento?
Editar:
Estoy corriendo,
- Ubuntu 11.10 de 64 bits
- Node.js 0.7.5
- npm 1.1.8
- moca 0.14.1
- debería 0.6.0
npm install mocha
, obtengo el resultado./node_modules/.bin/mocha
esperado.sudo npm install -g mocha
me atrapa/usr/local/bin/mocha
. Si esto no funciona correctamente en su entorno, podría ser un error, o simplemente mocha no se actualizó para admitir el nodo 0.7. *. En cuanto a su advertencia de desaprobación,exists
yexistsSync
fueron trasladados depath
quefs
en el nodo 0.7.1.Respuestas:
desde npm 5.2.0, hay un nuevo comando "npx" incluido con npm que lo hace mucho más simple, si ejecuta:
Nota: los argumentos opcionales se envían al comando que se está ejecutando (mocha en este caso)
esto seleccionará automáticamente el comando ejecutable "mocha" de su mocha instalado localmente (siempre agréguelo como una dependencia de desarrollo para asegurarse de que usted y todos los demás usen siempre el correcto).
Sin embargo, tenga cuidado de que si no instaló mocha, este comando buscará y usará automáticamente la última versión, lo cual es excelente para algunas herramientas (como scaffolders, por ejemplo), pero puede que no sea el más recomendable para ciertas dependencias en las que podría querer pin a una versión específica.
Puede leer más sobre npx aquí
Ahora, si en lugar de invocar directamente a mocha, desea definir un script npm personalizado, un alias que podría invocar otros binarios npm ...
no desea que las pruebas de su biblioteca fallen dependiendo de la configuración de la máquina (mocha como global, versión global de mocha, etc.), la forma de usar el mocha local que funciona multiplataforma es:
npm pone alias a todos los binarios en sus dependencias en esa carpeta especial. Finalmente, npm agregará node_modules / .bin a la RUTA automáticamente cuando ejecute un script npm, por lo que en su package.json puede hacer simplemente:
"scripts": { "test": "mocha" }
e invocarlo con
fuente
/node_modules/.bin/{module-binary-name}
es el lugar donde npm coloca accesos directos a los binarios en sus dependencias, no debe hacer referencia directamente a un archivo en las fuentes de una dependencia, ya que eso podría fallar en la próxima versión.Después de leer más y de la confirmación de Linus G Thiel arriba, descubrí que simplemente tenía que,
./node_modules/.bin
a miPATH
fuente
Para ventanas :
"scripts": { "start": "nodemon app.js", "test": "mocha" },
luego ejecuta el comando
fuente
Al instalar los módulos de nodo para mocha, probé los siguientes comandos
y al ejecutar o ejecutar la prueba de moka estaba probando
pero recibí el siguiente error como:
'Mocha' no se reconoce como comando interno o externo
Entonces, después de probar todo, resultó que simplemente establezca la ruta a las variables de entorno en las Variables del sistema como:
C: \ Archivos de programa \ nodejs \
Y funcionó :)
fuente