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}?
child_process.spawn返回一个ChildProcess对象.这个过程有它自己的stdout,它是一个ReadableStream.当通过管道传输到可写流时,ReadableStream在end()完成读取时调用此可写流.
如果您不想让可读流最终自动关闭目标流,只需传递给pipe选项{ end: false },如:
SomeSpawn.stdout.pipe( wStream, { end: false } );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将来必须手动关闭它.
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |