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。 如果我正确地解释文档,您的文件将在那里,并在其中的内容。