如何防止结束消息关闭 Nodejs 流?

How do I prevent end messages from closing Nodejs streams?

在节点服务器中,我将一系列流连接在一起。比如说:

streamA.pipe(streamB).pipe(streamC)

最终 streamA 完成,此时我想将下游切换到另一个来源:

streamD.pipe(streamB).pipe(streamC)

但是当我尝试这样做时,出现以下错误:

Error: write after end

如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游以将它们切换到 streamD?

此外,我的用例要求我等到 streamA 结束。我不能过早地切换流。

在我的例子中,我发现如果我在收到 'end' 事件时 unpipe() 我的下游,那么上游将没有机会关闭我的下游,一切正常。

streamA.on('end', function() {
    downstreams.forEach(downstream => {
        streamA.unpipe(downstream);
    });
}

如果有更规范的解决方案,请随时post。

一直在谷歌搜索同样的东西,你可以添加

streamA.pipe(streamB, {end: false}).pipe(streamC, {end: false})