当试图让Mocha观看我的项目时,"没有这样的模块"错误

Gre*_*g B 7 mocha.js windows-7 node.js

我正在尝试让Mocha观看我的项目进行测试并不断运行测试但是当我使用-w标志时我得到一个错误.

这里测试执行正常:

C:\Foo>mocha

  .

  ? 1 tests complete (3ms)
Run Code Online (Sandbox Code Playgroud)

在这里 -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)
Run Code Online (Sandbox Code Playgroud)

我在全局安装了Mocha(npm install -g mocha)并且应该在本地安装到项目中.

我在64位Windows 7家庭高级版上使用节点v0.6015,Mocha 1.0.1和0.6.1.

Art*_*rov 5

通过更改几个mocha源代码文件,我能够在Windows上工作.在npm之后安装mocha(在我的情况下,我只为我的项目安装它,而不是全局安装):

1)首先转到node_modules\mocha\lib\utils.js查找并修复监视功能,如下所示:

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);
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

我用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();
});
Run Code Online (Sandbox Code Playgroud)

由于没有相当于POSIX信号的行必须被删除(理想情况下由正确的实现替换,有关详细信息,请参阅node.js中与Windows相当的process.on('SIGINT')是什么?)

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();
    }
  });
Run Code Online (Sandbox Code Playgroud)

它限制了fs.watch的过度卡拉.

c)最后一项更改是删除或评论此行:

  process.stdout.write('\r' + str);
Run Code Online (Sandbox Code Playgroud)

功能播放(arr,interval).它只是去除噪音.


www*_*.tk 1

尝试将 mocha 本地安装到您正在测试的项目中,看起来 mocha 没有找到需要使用的模块。

另外我认为这对你也应该有帮助: Mocha 需要 make。找不到适用于 Windows 的 make.exe