Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件写入权限被EPERM阻止-删除然后写入新文件。Node.js_Javascript_Node.js_File_Error Handling_Overwrite - Fatal编程技术网

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异步编程。

可能重复的-可能重复的-哪部分做得不正确?如果是这样的话,它只能有一半的时间是不正确的吗?哪一部分做得不正确?如果是这样的话,它只能有一半的时间是错误的吗?