应用程序必须将日志数据存储到网络驱动器。 当驱动器在Windows下托管时,一切正常。 当驱动器在Mac下托管时,读/写是正常的,但是append得到了EPERM,因此日志根本不起作用。 代码非常简单
fs.appendFileSync('xxx.txt', 'zzzzzzzz');
如何正确追加数据?该文件通常太大而无法加载到内存中。
更新:read-write-delete-create是好的!仅打开附加失败
答案 0 :(得分:3)
我会选择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
希望这有帮助。
答案 1 :(得分:1)
EPERM代表错误 - PERMission:不允许nodejs写入日志文件。检查应用程序是否可以访问日志文件并进行更改,以便节点应用程序可以写入日志文件。
在Mac上,您可以执行for (int i = 0; i < 5; i++) {
int val = array[2][i] - array[3][i];
cout << val << endl;
}
(请注意,这允许任何有权访问您的文件系统的人写入日志文件。)
Windows服务器可能已经创建了日志文件,并且不允许mac服务器访问它(因为它不是所有者,写权限不是公共的)。
答案 2 :(得分:1)
可能是其他一些进程使用的文件? (因此访问/操作被拒绝)