EPEND on appendFile on network drive

时间:2015-12-08 16:47:05

标签: javascript node.js filesystems

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

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

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

更新:read-write-delete-create是好的!仅打开附加失败

3 个答案:

答案 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)

可能是其他一些进程使用的文件? (因此访问/操作被拒绝)