node.js child_process.spawn – 进程运行,但事件不会触发

我在node.js中陷入陷阱事件的subprocess有困难。 这个过程正常运行,完成后退出,所以一切正常。 标准输出也正确,所以我可以看到输出正常。 不幸的是,我的事件处理程序都没有启动,这使得我在处理完成后很难运行callback。 我的代码如下:

var child = child_process.spawn('node', ['processor', reportId.toString()], { cwd:cwd, stdio:'pipe', env:env }); child.on('data', function(data) { console.log('Received data...'); console.log(data.toString('utf8')); }); child.on('message', function(message) { console.log('Received message...'); console.log(message); }); child.on('close', function(code) { console.log('Child process closed'); }); child.on('disconnect', function(code) { console.log('Child process disconnected'); callback(); }); child.on('exit', function(code) { console.log('Child exited with code ' + code); callback(); }); child.stderr.pipe(process.stderr, { end:true }); child.stdout.pipe(process.stdout, { end:true }); 

我确定我做错了什么,但没有一个文件似乎提供了什么问题的线索。 有任何想法吗?

我在Windows上运行节点0.10.8。

Spawn没有在那个分支中内置相同的ipc通道,所以消息事件不会触发,除非你启用它:

 var child = child_process.spawn('node', ['processor', reportId.toString()],{ cwd:cwd, env:env, stdio:['ipc'] //enable ipc channel }); 

数据事件应该在孩子的stdout而不是孩子本身:

 child.stdout.on('data', function(data) { console.log('Received data...'); console.log(data.toString('utf8')); });