我是节点js的新手,我正在尝试执行以下操作:
function createPasswordfile(content)
{
fs.writeFile(passwordFileName,content, function(err) {
if(err) {
console.log("Failed on creating the file " + err)
}
});
fs.chmodSync(passwordFileName, '400');
}
function deletePasswordFile()
{
fs.chmodSync(passwordFileName, '777');
fs.unlink(passwordFileName,function (err) {
if (err) throw err;
console.log('successfully deleted');
});
}
并且有三个语句称为这些函数:
createPasswordfile(password)
someOtherFunction() //which needs the created password file
deletePasswordFile()
我遇到的问题是当我添加deletePasswordFile()
方法调用时,我得到这样的错误:
Failed on creating the file Error: EACCES, open 'password.txt'
successfully deleted
由于它是非阻塞的,我想deletePasswordFile
函数会在其他函数使用它之前删除该文件。
如果deletePasswordFile
已被注释掉,那么情况正常。
我该如何防止这种情况?
答案 0 :(得分:1)
writeFile
是异步的,因此当您尝试删除文件时,文件仍然可以写入。
尝试更改为writeFileSync
。
fs.writeFileSync(passwordFileName, content);