我制作了一个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