在networking驱动器上的appendFile EPERM

应用程序必须将日志数据存储到networking驱动器。 当驱动器在Windows下托pipe时,一切正常。 当驱动器在Mac下托pipe时,读/写是正常的,但附加得到EPERM,所以日志根本不起作用。 代码是相当微不足道的

fs.appendFileSync('xxx.txt', 'zzzzzzzz'); 

如何正确追加数据? 该文件通常太大,无法加载到内存中。

更新:读写删除创build是好的! 只有打开与追加失败

我会和Luc Gendriks一起去的。 EPERM发生在文件/文件夹权限不足的情况下。请尝试以下操作

码:

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

参考

https://nodejs.org/api/fs.html#fs_fs_chmodsync_path_mode https://nodejs.org/api/fs.html#fs_fs_appendfilesync_file_data_options

希望这可以帮助。

EPERM代表Error – PERMission:不允许nodejs写入日志文件。 检查应用程序是否有权访问日志文件并进行更改,以便节点应用程序可以写入日志文件。

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

可能windows服务器已经创build了日志文件,并且mac服务器不允许访问它(因为它不是所有者,写入权限不公开)。

可能是其他进程使用的文件? (所以访问/操作被拒绝)