这个函数位于另一个设置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 } );
在这种情况下,您必须在将来的某个时候手动关闭它