Javascript 文件写入权限被EPERM阻止-删除然后写入新文件。Node.js
我有一个文件系统功能,它可以删除一个文件,然后创建一个包含所有新数据的新文件。我正在寻找一个可能的修复方法,修复随机发生的错误,不是每次,而是每隔一次。这是我目前的代码:Javascript 文件写入权限被EPERM阻止-删除然后写入新文件。Node.js,javascript,node.js,file,error-handling,overwrite,Javascript,Node.js,File,Error Handling,Overwrite,我有一个文件系统功能,它可以删除一个文件,然后创建一个包含所有新数据的新文件。我正在寻找一个可能的修复方法,修复随机发生的错误,不是每次,而是每隔一次。这是我目前的代码: try { if(fs.existsSync(file)) { fs.unlink(file, function (err) {}); } } catch (error){ console.log('There was no file to be deleted'); } fs.open(fil
try {
if(fs.existsSync(file)) {
fs.unlink(file, function (err) {});
}
} catch (error){
console.log('There was no file to be deleted');
}
fs.open(file, 'w', function (err, file) {
if (err) throw err;
});
var logger = fs.createWriteStream(file, {
flags: 'a' // 'a' means appending (old data will be preserved)
});
它偶尔会抛出错误:
C:\Users\codel\OneDrive\Documents\BattlEye\index.js:265
if (err) throw err;
^
Error: EPERM: operation not permitted, open 'C:\Users\codel\OneDrive\Documents\BattlEye\files\610636905440215071.txt'
Emitted 'error' event on WriteStream instance at:
at internal/fs/streams.js:375:14
at FSReqCallback.oncomplete (fs.js:171:23) {
errno: -4048,
code: 'EPERM',
syscall: 'open',
path: 'C:\\Users\\codel\\OneDrive\\Documents\\BattlEye\\files\\610636905440215071.txt'
}
首先值得注意的是,这是一个云硬盘(OneDrive)。由于缺乏权限方面的知识,我决定通过将文件传输到硬盘驱动器来测试OneDrive是否存在问题。结果并不令人惊讶。这一点都没有改变
C:\Users\codel\Documents\BattlEye\index.js:265
if (err) throw err;
^
[Error: EPERM: operation not permitted, open 'C:\Users\codel\Documents\BattlEye\files\610636905440215071.txt'] {
errno: -4048,
code: 'EPERM',
syscall: 'open',
path: 'C:\\Users\\codel\\Documents\\BattlEye\\files\\610636905440215071.txt'
}
但是WriteStream上的Emmitted“error”事件从错误日志中消失
你知道为什么会发生此错误以及如何修复它吗?看起来你正在使用异步fs调用。异步调用不是这样工作的
您可以搜索NodeJS异步编程。看起来您正在使用异步fs调用。异步调用不是这样工作的
您可以搜索NodeJS异步编程。可能重复的-可能重复的-哪部分做得不正确?如果是这样的话,它只能有一半的时间是不正确的吗?哪一部分做得不正确?如果是这样的话,它只能有一半的时间是错误的吗?