node.js - 将可写 Node 流合并为一个流

标签 node.js gulp node.js-stream

我在 gulp 任务中有一组可写流。我想合并它们并返回一个流。我正在使用合并流 Node 模块来执行此操作。但我收到以下错误。

[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)

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

这是我尝试过的 promise 。

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

return Promise.all(promises);

最佳答案

问题是 merge-stream 将每个流视为 Transform stream ,即它尝试 call可写流上的pipe,但可写流没有pipe方法,只有write。要解决此问题,您可以使用 Transform streams进行写入,或者按照您所做的那样使用 Promise 等待 finish事件。

关于node.js - 将可写 Node 流合并为一个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39377669/

相关文章:

html - 我看不到 .png 文件作为图像,但作为背景图像它可以工作

javascript - 为什么 'finish' 事件会在 _flush 完成之前在 Node.js 转换流上触发?

node.js - "readable"事件发生两次

node.js - nodejs stdin 可读事件未触发

javascript - Node.js npm install express 无法从注册表中获取

node.js - 无法在 Visual Studio Code 中调试无服务器应用程序

node.js - 运行 Gulp 时为 "Unhandled stream error in pipe"和 "ENOTDIR: not a directory, open"

Gulp 4 watch gulp.series 只运行一次

node.js - Winston:尝试在没有传输的情况下写入日志

javascript - 从 Angular 4 向 Express 发送删除请求中的数组