NodeJS FileAppend错误:不允许EPERM操作,写
节点v4.3.1
我是Couchbase / AngularJS / Express.js / Node.JS应用程序的开发人员。应用程序当前状态是用户测试的开始。我的用户发现从CouchBase中存储的数据创建平面文件的问题。由于数据的大小和使用的存储方法,我需要分组检索数据。每个组(JSON文档)最多包含50,000行。我有一个进程,它将检索组。 NodeJS将从检索到的组生成行,然后将该组写入文件。当我设置编写单个组的过程时,该过程正常,但用户希望将数据放在单个文件中。由于服务器上的空间有限,我无法增加内存分配来处理所有组到单个文件中进行写入。我尝试使用appendFile和writeFile以及append标志方法但该过程失败。我收到以下错误消息: {[错误:EPERM:不允许操作,写入]错误号:-4048,代码:' EPERM',系统调用:'写' }
在测试纠正问题期间,我能够将文件附加到我的本地C:驱动器。当我尝试附加到我的网络驱动器时,收到错误消息。我联系了系统管理员以验证权限。启用所有权限,包括创建文件夹/追加数据的特殊权限。
我不明白为什么我可以将数据附加到本地驱动器而不是网络位置。
为了解决此问题,您可以在下面找到说明我的尝试的代码段:
function writeExpFile(fileName, writeDirectory, writeExFile, callback) {
//fs.writeFile(writeDirectory + '\\' + fileName, writeExFile.toString(), {encoding: 'utf8', flag: 'a'}, function(err, result)
fs.appendFile(writeDirectory + '\\' + fileName, writeExFile.toString(), { encoding: 'utf8' }, function (err, result) {
if (err) {
console.log('FMwriteFile', err);
callback(err, null);
}
else {
console.log('writeDirectory done', writeDirectory + '\\' + fileName + ' ' + cntWEF.toString());
callback(null, result);
}
});
//fs.appendFileSync(writeDirectory + '\\' + fileName, writeExFile.toString(), {encoding: 'utf8', flag: 'a'});
//fs.writeFileSync(writeDirectory + '\\' + fileName, writeExFile.toString(), {encoding: 'utf8', flag: 'a'});
//console.log('writeDirectory done', writeDirectory + '\\' + fileName + ' ' + cntWEF.toString());
//callback(null, 'success');
};
其中filename
是文件名(file1),writeDirectory
是文件夹路径的名称(\ server \ folder1 \ folder1a \ folder1aa),writeExFile
是数据写作。
我希望找到一个可以解释为什么这个过程无法进入我的网络驱动器但是对我的本地驱动器成功的人。此外,提供解决此问题的方法。
我感谢所有建议。