gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:33 25 4
gpt4 key购买 nike

这个函数在另一个设置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返回一个 ChildProcess 对象。这个过程有自己的stdout ,它是一个 ReadableStream。 ReadableStream 在通过管道传输到可写流时,会在完成读取时调用此可写流上的 end()

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

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

在这种情况下,您将不得不在以后的某个时间手动关闭它。

关于node.js - 重用写入流而不结束它并一遍又一遍地声明新流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com