Javascript 网络驱动器上追加文件上的EPERM

Javascript 网络驱动器上追加文件上的EPERM,javascript,node.js,filesystems,Javascript,Node.js,Filesystems,应用程序必须将日志数据存储到网络驱动器。 当驱动器托管在Windows下时,一切正常。 当驱动器托管在Mac下时,读/写是可以的,但append得到EPERM,所以日志根本不起作用。 代码非常简单 fs.appendFileSync('xxx.txt', 'zzzzzzzz'); 如何正确地追加数据?文件通常太大,无法加载到内存中 更新:读写删除创建正常!仅使用append打开失败EPERM表示错误-权限:不允许nodejs写入日志文件。检查应用程序是否可以访问日志文件,并对其进行更改,以便节

应用程序必须将日志数据存储到网络驱动器。 当驱动器托管在Windows下时,一切正常。 当驱动器托管在Mac下时,读/写是可以的,但append得到EPERM,所以日志根本不起作用。 代码非常简单

fs.appendFileSync('xxx.txt', 'zzzzzzzz');
如何正确地追加数据?文件通常太大,无法加载到内存中


更新:读写删除创建正常!仅使用append打开失败

EPERM表示错误-权限:不允许nodejs写入日志文件。检查应用程序是否可以访问日志文件,并对其进行更改,以便节点应用程序可以写入日志文件

在mac上,您可以执行
chmod 777 somefile.log
(请注意,这允许任何有权访问您的文件系统的人写入日志文件)


可能是windows服务器创建了日志文件,不允许mac服务器访问它(因为它不是所有者,写入权限不是公共的)。

我会选择Luc Gendriks。EPERM在您没有足够的文件/文件夹权限时发生。请尝试以下操作

代码:

 fs.chmod('xxx.txt', 777, function(err){
  if(err){
   console.log(err);
   return;
  }
  fs.appendFileSync('xxx.txt', 'zzzzzzzz');
});
参考


希望这有帮助。

文件可能被其他进程使用了吗?(因此访问/操作被拒绝)

相同的结果-EPERM。在windows下,附加是单独的权限。可能,当在使用hfs驱动器或类似设备的windows下运行时,节点可能会有一个bug。我说了两次读写删除创建就可以了!仅使用append打开失败。在Windows下使用appendFile或appendFileSync时,这不起作用。appendFile和appendFileSync可以创建该文件,但不能写入该文件,这可能是NodeJ在Windows构建中的一个错误。太糟糕了。您可以将appendFile或appendFileSync添加到本地临时文件,然后将其复制到所需的目标。但仍然不理想。是否尝试过fs.appendFile?可能是相同的结果,但值得一试。任何附加都会失败。即使是带有标志“a”的createWriteStream。但是,在没有这样的标志的情况下写作,您是否完成了ls-le xxx.txt?您可能有一个冲突的ACL。ls-le xxx.txt-rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw。如果没有,那我就没有主意了。