2012-04-21 41 views
7

我試圖讓摩卡看我的項目進行測試,並不斷運行測試,但是當我使用-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) 

我有全局(npm install -g mocha)安裝摩卡,應在本地安裝的項目。

我正在使用節點v0.6015,摩卡1.0.1和應0.6.1在64位Windows 7家庭高級版。

+0

你是如何安裝的? – srquinn 2012-05-28 19:24:56

+0

@jibsales通過NPM,請參閱上面錯誤下面的行。 – 2012-05-30 08:12:28

+0

我的歉意,我的意思是你是如何安裝節點 – srquinn 2012-05-30 13:44:31

回答

5

我能夠改變一對夫婦的摩卡源代碼文件,使其工作在Windows上。 NPM安裝摩卡之後(在我來說,我安裝了它只是爲我的項目,而不是全局):

1)首先去node_modules \摩卡\ 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); 
     }); 
    }); 
}; 

我換成fs.watchFile與fs.watch(見https://github.com/fgnass/node-dev/issues/26瞭解詳細信息),因爲第一個似乎並沒有工作在Windows上。

2)現在打開node_modules \摩卡\ BIN \ _mocha並應用以下修復:

一)查找和註釋或刪除下面的代碼:

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(WATC hFiles,函數(){...

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(); 
    } 
    }); 

它過度的節流從callacks fs.watch更換。

c)中最後變化是去除或註釋出這一行:

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

功能播放(ARR,間隔)。它只是消除噪音。

+0

這工作正常,謝謝你的解決方案。你知道在每次重啓後如何強制清除終端嗎? – WHITECOLOR 2012-07-12 13:53:09

+0

問題是,當任何文件發生更改時,它會重新啓動測試。但它沒有考慮到變化(除了測試文件的變化) – WHITECOLOR 2012-07-12 14:55:39

+0

還沒有嘗試清除終端。在我的環境中找出所有文件更改,儘管我只在lib文件夾中測試沒有任何子文件夾的腳本。嘗試查看_mocha,如果我沒有弄錯,那麼文件監控就會設置在那裏。 – 2012-07-21 11:59:15

相關問題