将可写节点流合并为一个流

Merging writable node streams into one stream

我在 gulp 任务中有一组可写流。我想将它们合并 return 一个流。我正在使用合并流节点模块来执行此操作。不过我收到以下错误。

[14:22:56] Error: Cannot pipe, not readable
    at WriteStream.Writable.pipe (_stream_writable.js:161:22)
    at add (C:\workspace\mediafly-viewer\desktop\node_modules\merge-stream\index.js:28:12)
    at Array.forEach (native)

是否支持合并可写流?如果是这样,我该怎么做?

这是我尝试过的承诺。

const promises = streams.map(s => new Promise((resolve, reject) => s.on('finish', resolve).on('error', reject)));

return Promise.all(promises);

问题是 merge-stream 将每个流视为一个 Transform stream, i.e. it tries to call pipe on the writable stream, but writable streams do not have pipe method, only write. What you can do to fix this is to either use Transform streams for your writes, or do as you've done by using Promise to wait for the finish 事件。