在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服务器不允许访问它(因为它不是所有者,写入权限不公开)。
可能是其他进程使用的文件? (所以访问/操作被拒绝)