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

时间:2012-04-21 10:48:57

标签: node.js windows-7 mocha

我正在尝试让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。

2 个答案:

答案 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