此函数位于另一个设置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)
在不结束此流的情况下,如何继续重用它?
更新
正如comments部分所指出的,有一个进程显式地结束这个流。
我正在运行一个child_process.spawn方法
SomeSpawn.stdout.pipe( wStream );
为什么以及如何关闭此流?我怎样才能阻止它明确地关闭它呢?
像
{end:false}
? 最佳答案
child_process.spawn
返回一个childprocess对象。这个进程有自己的stdout
,它是一个可读的流。readablestream在通过管道传输到可写流时,会在该可写流完成读取时对其调用end()
。
如果您不想让可读流最终自动关闭目标流,只需传递给pipe
选项{ end: false }
,例如:
SomeSpawn.stdout.pipe( wStream, { end: false } );
在这种情况下,您将不得不在将来的某个时候手动关闭它。
关于node.js - 重用写入流而不结束它,并一遍又一遍地声明新的流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32358292/