7

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、Should 0.6.1 を使用しています。

4

2 に答える 2

5

いくつかの mocha ソース コード ファイルを変更することで、Windows で動作させることができました。npm install 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.watchFile を fs.watch に置き換えました (詳細については、 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 シグナルに相当するものがないため、上記の行を削除する必要があります (理想的には、適切な実装に置き換える必要があります。詳細については、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();
    }
  });

fs.watch からの過剰な callack を抑制します。

c) 最後の変更は、次の行を削除またはコメントアウトしています。

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

関数 play(arr , interval) で。ノイズを除去するだけです。

于 2012-07-07T10:33:00.263 に答える
1

テストしているプロジェクトに mocha をローカルにインストールしてみてください。mocha は、使用するために必要なモジュールを見つけられなかったようです。

また、これはあなたにとっても役立つはずだと思います: Mocha には make が必要です。Windows で動作する make.exe が見つからない

于 2012-06-16T17:51:21.357 に答える