簡體   English   中英

node.js進程抑制輸出但不輸入

[英]node.js process suppress output but not input

我有以下代碼:

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的輸入和輸出?

原因是因為我不想像現在那樣將其輸出給用戶。

查看可以使用偵聽器或使用'ignore'屬性的文檔

您可能在輸出中看到的是convert.stderr因為您正在將其管道傳輸到process.stderr ,這是子進程主convert.stderr的錯誤輸出。 生成子進程時,默認情況下,不處理任何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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM