【发布时间】:2016-04-26 06:25:55
【问题描述】:
我使用节点 child_process API
https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
var child = child_process.spawn(cmd, val, options);
从孩子我使用以下
child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);
我可以在这些管道事件中添加一些代码,例如 console.log 吗?
例如可能使用原型
child.on('error', function(err) {
console.log(err);
});
更新
我需要的是收听这个childProcess.stderr.pipe(process.stderr);,如果我遇到错误,请执行process.exit(1)
当我尝试类似错误时
child.stderr.pipe(function () {
console.log("im here");
process.stderr;
process.exit(1);
}
);
更新2
我尝试以下方法
var child = child_process.spawn(cmd, value, opt);
child.stdout.on('data', function (data) {
console.log("IM HERE");
console.log('data' + data);
});
child.stderr.on('data', function (data) {
console.log("IM HERE");
console.log('test: ' + data);
reject(data);
});
child.on('close', function (code) {
console.log("IM HERE");
console.log("close");
});
child.on('error', function (err) {
console.log("IM HERE");
console.log(err);
});
child.stderr.on('error', function (err) {
console.log("IM HERE");
console.log("my Erorr");
process.stderr.emit('error', err);
});
child.stdout.on('data', function (buf) {
console.log("IM HERE");
console.log('buf receive');
console.log(buf.toString());
});
//只是当我添加以下内容时,我在日志中看到了错误
child.stderr.pipe(process.stderr)
console.log("im here") 不打印以防出错
我需要以某种方式收听这个管道,或者以某种方式扩展 child.stderr.pipe(process.stderr),我需要做的是process.exit(1),以防我从上面的代码语句中得到错误...
也许使用 javascript 原型,但不知道该怎么做...
请帮助我卡住了,我知道这并不简单......
【问题讨论】:
标签: javascript node.js javascript-events child-process spawn