node.js readFile争用条件 – 在没有完全写入磁盘时读取文件

我的node.js应用程序每秒运行一个函数(recursion地)读取.json文件的目录树。 这些文件通过FTP从客户端上载到服务器,并放置在运行节点脚本的文件夹中。

我发现的(至less是我认为发生的事情)是节点不会等待.json文件在尝试读取之前被完全写入,因此会抛出“意外的input结束”错误。 似乎文件系统需要几秒钟(毫秒)才能正确写入文件。 这也可能与正在从FTP写入的文件有关(开销可能,我完全猜测在这里…)

有没有办法,我们可以等待文件完全写入文件之前试图读取节点?

fs.readFile(file, 'utf8', function(err, data) { var json = JSON.parse(data); // throws error }); 

你可以查看文件是否仍在增长:

https://github.com/felixge/node-growing-file