2012-04-21 17 views
7

Estoy intentando hacer que Mocha mire mi proyecto para probarlo y ejecutar constantemente las pruebas, pero cuando uso el indicador -w me sale un error.Error de "No such module" al intentar que Mocha vea mi proyecto

Aquí la prueba ejecuta bien:

C:\Foo>mocha 

    . 

    ? 1 tests complete (3ms) 

y aquí con -w

C:\Foo>mocha -w 


node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: No such module 
    at EventEmitter.<anonymous> (node.js:392:27) 
    at Object.<anonymous> (C:\Users\Greg\AppData\Roaming\npm\node_modules\mocha\bin\_mocha:203:11) 
    at Module._compile (module.js:441:26) 
    at Object..js (module.js:459:10) 
    at Module.load (module.js:348:31) 
    at Function._load (module.js:308:12) 
    at Array.0 (module.js:479:10) 
    at EventEmitter._tickCallback (node.js:192:40) 

tengo Mocha instalado a nivel mundial (npm install -g mocha) y debe instalarse de forma local al proyecto.

Estoy utilizando el nodo v0.6015, Mocha 1.0.1 y Debería 0.6.1 en 64 bits Windows 7 home premium.

+0

¿cómo se instaló? – srquinn

+0

@jibsales Vía NPM, vea la línea debajo del error anterior. –

+0

Mis disculpas, quise decir cómo instaló el Nodo – srquinn

Respuesta

5

yo era capaz de hacer que funcione en las ventanas cambiando un par de archivos de código fuente moca. Después de instalar NPM moka (en mi caso lo instalé sólo para mi proyecto, no globalmente):

1) En primer lugar ir a node_modules \ moka \ lib \ utils.js encontrar y corregir reloj función de la siguiente :

exports.watch = function(files, fn) { 
    var options = { interval: 100 }; 
    files.forEach(function(file) { 
     debug('file %s', file); 
     fs.watch(file, options, function(curr, prev) { 
      fn(file); 
     }); 
    }); 
}; 

que sustituyen fs.watchFile con fs.watch (ver https://github.com/fgnass/node-dev/issues/26 para más detalles), porque no parece que el primero de ellos para trabajar en las ventanas.

2) Ahora abierta node_modules \ moka \ bin \ _mocha y aplicar correcciones siguientes:

a) Buscar y comentar o borrar siguiente código:

process.on('SIGINT', function(){ 
    showCursor(); 
    console.log('\n'); 
    process.exit(); 
}); 

Como no hay un equivalente de POSIX las líneas de señales de arriba tienen que ser eliminadas (idealmente reemplazadas por una implementación apropiada, vea What is the Windows equivalent of process.on('SIGINT') in node.js? para más detalles)

b) Buscar el siguiente código utils.watch (watc hFiles, function() {... y reemplazarlo con

var lastRun = new Date(); 
    utils.watch(watchFiles, function(){ 
    if (new Date() - lastRun > 300) 
    { 
     purge(); 
     stop() 
     mocha.suite = mocha.suite.clone(); 
     ui = interfaces[program.ui](mocha.suite); 
     loadAndRun(); 
     lastRun = new Date(); 
    } 
    }); 

Se estrangula callacks excesivas de fs.watch.

c) del último cambio es la eliminación o comentando esta línea:

process.stdout.write('\r' + str); 

en juego de función (arr, intervalo). Simplemente elimina el ruido.

+0

Eso funciona bien, gracias por la solución. ¿Sabes cómo forzarlo a borrar el terminal después de cada reinicio? – WHITECOLOR

+0

El problema es que reinicia las pruebas cuando se cambian los archivos. Pero no tiene en cuenta los cambios (excepto los cambios en el archivo de prueba) – WHITECOLOR

+0

No intente borrar el terminal. Recoge todos los cambios de archivos en mi entorno, aunque solo he probado scripts en la carpeta lib sin ninguna subcarpeta. Intenta echar un vistazo a _mocha, la supervisión de archivos está configurada allí si no me equivoco. –

Cuestiones relacionadas