node.js进程抑制输出但不输入

时间:2013-09-17 15:51:49

标签: javascript node.js process stream spawn

我有这段代码:

var convert = spawn("gm", ["convert"].concat(parameters));
// output stream
obj.outStream = new BufferList();

convert.stderr.pipe(process.stderr, { end: false });
// put the output in the stream TOO
convert.stdout.pipe(obj.outStream);
// send the image to the input
obj.stream.pipe(throttle).pipe(convert.stdin);

如何在不抑制输入和obj.outStream输出的情况下抑制“转换”过程的输出?

原因是因为我不想像现在那样将其输出给用户。

2 个答案:

答案 0 :(得分:0)

请参阅docs您可以使用听众或使用'忽略'属性。

答案 1 :(得分:0)

您在输出中可能看到的是convert.stderr,因为您正在将它传递给process.stderr,这是您的子进程'master的错误输出。当您生成子进程时,默认情况下不会处理stdio

var spawn = require('child_process').spawn'
var child = spawn('gm', ['convert']);

您所显示的代码是您直接将孩子的stderr传递给主要流程“stderr并将stdout管道传送到您的outStream。这意味着您可以看到的唯一可能输出是convert.stderr

要解决此问题,请忽略stderr

var obj = {
  outStream: new BufferList()
};

var spawn = require('child_process').spawn'
var child = spawn('gm', ['convert'], {
  stdio: ['pipe', obj.outStream, 'ignore']
});

通过此操作,您可以像往常一样拥有stdin信息流,stdout通过管道传输到obj.outStream m并忽略stderr