Javascript 节点WritableStream不直接级联

Javascript 节点WritableStream不直接级联,javascript,node.js,stream,filesystems,Javascript,Node.js,Stream,Filesystems,我正在使用writestreamfs.createWriteStream('my.log',{flags:'a'})写入日志文件my.log 同时,我还有另一个代码段,它使用fs.createReadStream()读取my.log文件,但是,这个代码段似乎没有在日志文件写入后立即得到更新。只有在我的操作系统(windows)上手动打开和关闭文件时,才会触发该文件 我该怎么做才能立即触发?我是否每次都重新打开和关闭writestream,如: var strm = fs.createWriteS

我正在使用writestream
fs.createWriteStream('my.log',{flags:'a'})写入日志文件
my.log

同时,我还有另一个代码段,它使用
fs.createReadStream()
读取
my.log
文件,但是,这个代码段似乎没有在日志文件写入后立即得到更新。只有在我的操作系统(windows)上手动打开和关闭文件时,才会触发该文件

我该怎么做才能立即触发?我是否每次都重新打开和关闭writestream,如:

var strm = fs.createWriteStream('my.log', {flags: 'a'})
// log my data
strm.close();
// rinse and repeat

这似乎归结为节点/窗口中的一个问题:

  • “fs.watch API在不同平台之间不是100%一致的,在某些情况下不可用”
  • 在Windows系统上,此功能取决于ReadDirectoryChangesW

因此,作为解决方案,我现在使用:

// https://www.npmjs.com/package/tail
var Tail = require('tail').Tail;
// Pass property to force the usage of fs.watchFile
tail = new Tail('my.log', { useWatchFile: true });

如果您不想使用软件包“tail”,那么您应该手动使用
fs.watchFile
,并对文件更改采取相应的措施。

您是否尝试过使用它们?这不是streams的内置功能。读取流读取到流的末尾,然后关闭流。它不会一直监视更多的字节显示在最后。您可能会发现这个包对于直接使用或检查它们是如何执行的都很有用。很抱歉,我忘了提到,我一直在使用支持跟踪文件的读取流,即:,所以我使用
fs.createReadStream(…,{tail:true})创建它
这项工作由谁来完成。但是它仍然没有触发。我将试用你的链接包。