我正在尝试让Mocha观看我的测试项目并不断运行测试但是当我使用-w
标志时出现错误。
此处测试执行正常:
C:\Foo>mocha
.
? 1 tests complete (3ms)
此处有-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)
我在全球范围内安装了Mocha(npm install -g mocha
),并且应该在本地安装到项目中。
我在64位Windows 7家庭高级版上使用节点v0.6015,Mocha 1.0.1和0.6.1。
答案 0 :(得分:5)
我能够通过更改几个mocha源代码文件使其在Windows上运行。 在npm之后安装mocha(在我的情况下,我只为我的项目而不是全局安装它):
1)首先转到 node_modules \ mocha \ lib \ utils.js 查找并修复 watch 功能,如下所示:
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);
});
});
};
我用fs.watch替换fs.watchFile(有关详细信息,请参阅https://github.com/fgnass/node-dev/issues/26),因为第一个似乎不适用于Windows。
2)现在打开 node_modules \ mocha \ bin \ _mocha 并应用以下修复程序:
a)查找并注释掉或删除以下代码:
process.on('SIGINT', function(){
showCursor();
console.log('\n');
process.exit();
});
由于没有相当于POSIX信号的行必须删除(理想情况下,通过适当的实现取而代之,请参阅What is the Windows equivalent of process.on('SIGINT') in node.js?了解更多详情)
b)找到以下代码 utils.watch(watchFiles,function(){... 并将其替换为
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();
}
});
它限制了fs.watch的过度卡拉克。
c)最后一项更改是删除或评论此行:
process.stdout.write('\r' + str);
功能播放中的(arr,interval)
。它只是消除了噪音。答案 1 :(得分:1)
尝试将mocha本地安装到您正在测试的项目中,看起来像mocha没有找到要使用的模块。
另外我认为这对你也有帮助: Mocha requires make. Can't find a make.exe that works on Windows