我製作了一個node.js
應用程序,以遞歸方式列出目錄中的所有.txt
文件,併爲每個文件做一些操作。NodeJS:扔呃; //使用child_process spawn方法時未處理的'error'事件(events.js:72)
這裏是我的app.js:
var spawn = require('child_process').spawn,
dir = spawn('dir', ['*.txt', '/b']);
dir.stdout.on('data', function (data) {
//do some stuff with each stdout line...
console.log('stdout: ' + data);
});
dir.stderr.on('data', function (data) {
//throw errors
console.log('stderr: ' + data);
});
dir.on('close', function (code) {
console.log('child process exited with code ' + code);
});
當我通過控制檯運行node app.js
,我得到以下錯誤信息:
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:980:11)
at Process.ChildProcess._handle.onexit (child_process.js:771:34)
我使用節點v0.10.13
在win32
環境。
,因爲我要處理由線stdout
線(EXEC方法釋放整個stdout
作爲一個字符串)我做這樣(產卵)。
* UPDATE *
順便說一句,使用
spawn
爲child_process
不保證輸出cmd dir
將是一行一行。我也創建了一個question for that。
Downvoter,你能解釋一下爲什麼嗎? – gustavohenke
我沒有downvote,但這個答案並沒有真正回答這個問題 - 我們在哪裏附加一個on('error',fn)處理程序來捕獲錯誤(不僅僅是防止錯誤!)。 –
@AlexMills這裏沒有真正的問題,沒有「?」 :)'錯誤'處理程序應該附加到衍生進程。 – gustavohenke