重复使用写入流而不结束它并一遍又一遍地声明新流

use*_*820 2 stream child-process node.js

此函数位于另一个函数内,该函数将wStream写入流设置为wStream成功运行的文件.

但是这样做

fs.watch(fname, function watcher (evt, fname) {


        if (evt === 'change') {
            wStream.write("File " + fname + " changed\n");

        } else if (evt === 'rename') {
            wStream.write("File " + orig + " renamed\n");

        }
Run Code Online (Sandbox Code Playgroud)

产生此错误

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: write after end
    at writeAfterEnd (_stream_writable.js:167:12)
    at WriteStream.Writable.write (_stream_writable.js:214:5)
Run Code Online (Sandbox Code Playgroud)

如何在不结束此流的情况下继续重复使用它?

更新 正如评论部分所指出的,有一个流程明确地结束了这个流.

我正在运行一个child_process.spawn方法就像

SomeSpawn.stdout.pipe( wStream ); 
Run Code Online (Sandbox Code Playgroud)

关闭此流的原因和原因是什么?我怎样才能阻止它明确地关闭它?类似的东西{end:false}

Rod*_*ros 5

child_process.spawn返回一个ChildProcess对象.这个过程有它自己的stdout,它是一个ReadableStream.当通过管道传输到可写流时,ReadableStream在end()完成读取时调用此可写流.

如果您不想让可读流最终自动关闭目标流,只需传递给pipe选项{ end: false },如:

SomeSpawn.stdout.pipe( wStream, { end: false } ); 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将来必须手动关闭它.