Node.js 0.12.7在Windows上的writeFileSync和subprocess

我的nodejs代码将http请求写入JSON文件,然后根据写入的JSON文件中的参数调用subprocess来运行。

app.post("/run_with_parameters", function(req, res){ fs.writeFileSync("parameters.json", JSON.stringify(req.body)); child_process.stdin.write("parameters.json"); //child process will read json and act accordingly }); 

在Windows机器上,“subprocess”有时会得到旧的参数,而不是新的参数,我怀疑是因为fs.writeFileSync在返回运行下fs.writeFileSync语句之前没有写完磁盘。 (根据这个职位 )。

这是一个Node.js的错误/function? 或者它只存在于Windows机器上?

如果我这样编码会更好吗?

 app.post("/run_with_parameters", function(req, res){ fs.writeFile("parameters.json", JSON.stringify(req.body), function(){ child_process.stdin.write("parameters.json"); //child process will read json and act accordingly }); }); 

这是否保证“subprocess”总是得到更新的“parameters.json”?

链接到的文章(特别是在谈到ZFS时)指出,这些文件操作都不能保证callback完成时数据已被写入。 然而一个stream的finish事件说:

当end()方法被调用,并且所有的数据已经被刷新到底层系统时,这个事件就会被发出。

所以你可以使用createWriteStream ,写入它并pipe道到finish事件的subprocess。 如果我正确地解释文档,您的文件将在那里,并在其中的内容。