stdio流的值不正确:WriteStream

时间:2017-06-30 12:38:58

标签: javascript node.js

const barStream = fs.createWriteStream('bar');
const foo = spawn('foo', [], { stdio: ['ignore', barStream, 'inherit'] });

抛出错误:

  

stdio stream的值不正确:WriteStream

在某些情况下,像foo.stdout.pipe(barStream)这样的反向执行此操作很可能。

但为什么不能将WriteStream作为stdout流提供呢?有没有办法让barStream适合stdout?

1 个答案:

答案 0 :(得分:4)

来自documentation for the stdio option,强调我的:

  

<Stream> object - 共享一个可读或可写的流,该流引用带有子进程的tty,文件,套接字或管道。流的底层文件描述符在子进程中复制到与stdio数组中的索引对应的fd。 请注意,流必须具有基础描述符(文件流不会发生'open'事件。)

所以:

const barStream = fs.createWriteStream('bar');

barStream.on('open', () => {
    const foo = spawn('foo', [], { stdio: ['ignore', barStream, 'inherit'] });
    ⋮
});

我承认错误信息肯定会更有帮助。