重用写流,而不必结束它并一次又一次地声明新流



这个函数位于另一个设置wStream写流的函数内部到一个wStream成功运行一次的文件。

running this然而

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

        if (evt === 'change') {
            wStream.write("File " + fname + " changedn");
        } else if (evt === 'rename') {
            wStream.write("File " + orig + " renamedn");
        }

产生这个错误

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。生成方法,比如

SomeSpawn.stdout.pipe( wStream ); 

为什么以及如何负责关闭这个流?我怎样才能阻止它显式地关闭它呢?比如{end:false} ?

child_process.spawn返回一个ChildProcess对象。这个进程有自己的stdout,它是一个ReadableStream。当ReadableStream连接到一个可写流时,当它完成读取时,调用end()对这个可写流。

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

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

在这种情况下,您必须在将来的某个时候手动关闭它

相关内容

  • 没有找到相关文章

最新更新