我有这段代码:
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输出的情况下抑制“转换”过程的输出?
原因是因为我不想像现在那样将其输出给用户。
答案 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
。