Javascript fs.writeFileSync未写入指定文件
我正在尝试更新节点服务器上的文件内容,但fs.writeFileSync无法写入指定的文件而不引发任何错误,我在代码中的其他方法中有相同的行,但此特定行未执行写入操作,也未引发任何错误Javascript fs.writeFileSync未写入指定文件,javascript,node.js,fs,Javascript,Node.js,Fs,我正在尝试更新节点服务器上的文件内容,但fs.writeFileSync无法写入指定的文件而不引发任何错误,我在代码中的其他方法中有相同的行,但此特定行未执行写入操作,也未引发任何错误 "negotiate": function(menu){ if (menu) { //this would be changed later to the appropraite request //get url from menu //getting t
"negotiate": function(menu){
if (menu) {
//this would be changed later to the appropraite request
//get url from menu
//getting task list quesions
menu = fs.readFileSync(rootPath + menu.output, 'utf8');
menu = JSON.parse(menu);
}
var userData = fs.readFileSync(this.pathToUserTable(), 'utf8');
userData = JSON.parse(userData);
userData = this.updateUserDataForNegotiate(userData, menu);
//fs.unlinkSync(this.pathToUserTable());
try{
fs.writeFileSync(this.pathToUserTable(), JSON.stringify(userData));//not writing to file
} catch(err){
console.log(err);//no error thrown
}
this.res.send(menu);
},
this.pathToUserTable()
返回相当于rootPath+“/database/users/”+this.req.query.msisdn+”.json“
,其中var rootPath=path.normalize(\uu dirname+“/../”)代码>。我已经测试过这个方法,并且确信它是有效的
我还确信这也会返回相应的日期JSON.stringify(userData)
在这一点上,我觉得很奇怪
刚刚添加我在fs write方法中添加了一个超时,它可以工作,我猜在调用这个fs write方法时,文件不可用,所以写操作不会发生
var that = this;
setTimeout(function(){
fs.writeFileSync(that.pathToUserTable(), JSON.stringify(userData));
console.log(that.pathToUserTable(), " ", JSON.stringify(userData));
}, 5);
那么,在执行此操作之前,如何等待上一个fs.writeFileSync
方法完成?this.pathToUserTable()
返回的确切内容是什么?可能是因为文件路径不正确,请尝试通过另一种方式进行路径设置,就像使用\uuuDirName+'../'
@farhadamjady\uuuDirName
从不包含尾随斜杠,这样会失败。fs.writeFileSync
的整个思想是它返回时已经完成。可能是this.updateUserDataForConfertive
和/或this.pathToUserTable
异步函数吗?@robertklep,不,它们根本不是,我正在考虑使用while语句检查文件内容是否等于userData