【发布时间】:2021-03-25 17:09:29
【问题描述】:
我有一个文件系统功能,它删除一个文件,然后用所有新数据创建一个新文件,我正在寻找一个可能的解决方案来解决随机发生的错误,而不是每次发生,而是每隔一段时间发生一次。这是我当前的代码:
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' 事件从错误日志中消失了。
关于为什么会发生此错误以及如何修复它的任何想法?
【问题讨论】:
标签: javascript node.js file error-handling overwrite