EPERM 阻止的文件写入权限 - 删除然后写入新文件。节点.js
Posted
技术标签:
【中文标题】EPERM 阻止的文件写入权限 - 删除然后写入新文件。节点.js【英文标题】:File writing permissions blocked by the EPERM - Deleting then writing a new file. Node.js 【发布时间】: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' 事件从错误日志中消失了。
关于为什么会发生此错误以及如何修复它的任何想法?
【问题讨论】:
可能重复 - ***.com/questions/34600932/… 【参考方案1】:看起来您正在使用异步 fs 调用。异步调用不是这样工作的。
你可以搜索一下NodeJS异步编程。
【讨论】:
哪一部分做错了?如果是这样,它只能是错误的一半吗?以上是关于EPERM 阻止的文件写入权限 - 删除然后写入新文件。节点.js的主要内容,如果未能解决你的问题,请参考以下文章
我可以将文件写入linux目录,指定cfscript中的文件权限吗?