2016-09-07 13 views
1

私は、グルップタスクに書き込み可能なストリームの配列を持っています。私はそれらをマージして1つのストリームを返したいと思います。私はこれを行うには、マージストリームノードモジュールを使用しています。私は次のエラーが発生します。書き込み可能なノードストリームを1つのストリームにマージする

[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); 
+0

読み取り不能なストリーム(たとえば書き込み専用)を書き込み可能なストリームにパイプすることはできません。 1つの書き込み可能なストリームを '変換 '(デュプレックス)ストリームに変換することを検討しますか、これは不可能ですか? – Mike

+1

実際、わかりません。目標は、すべてのストリームが終了したときに通知を受け取ることでした。私はこれを約束で済ませることができましたが、それはあまりきれいではありません。それを可能な解決策としてここに掲示する。 –

答えて

0

問題がTransform streamとしてmerge-stream扱い各ストリームは、すなわち、それは書き込み可能なストリームにcallpipeしようとするが、書き込み可能なストリームはpipe方法のみwriteを有していません。これを解決するには、書き込みにTransform streamsを使用するか、プロンプトを使用してfinishイベントを待つようにします。

関連する問題