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

Reuse the write stream without ending it and declaring new stream over and over again

这个函数在另一个设置 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");

        }

产生这个错误

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)

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

更新 正如评论部分指出的那样,有一个进程明确结束了这个流。

我运行一个child_process.spawn方法就可以了

SomeSpawn.stdout.pipe( wStream ); 

它为什么以及如何负责关闭此流?我怎样才能阻止它明确关闭它? 类似于 {end:false}?

child_process.spawn returns a ChildProcess object. This process has its own stdout,这是一个 ReadableStream。一个 ReadableStream,当通过管道传输到一个可写流时,当它完成读取时,在这个可写流上调用 end()

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

SomeSpawn.stdout.pipe( wStream, { end: false } ); 

在这种情况下,您以后需要手动关闭它。