[英]Node.js fs.open with option 'a' generates EACCES error
我正在尝试使用node.js的fs模块在POST请求上创建xml文件。
filePath = path.normalize(path.join(profilesDirPath, name + xmlExt));
fs.exists(filePath, function(exists) {
if (exists) {
callback({
code: h.httpStatus.CONFLICT,
resp: 'audio profile group with such name exists'
});
return;
}
fs.open(filePath, 'a', function(error) {
if (error) {
callback({
code: h.httpStatus.INTERNAL_SERVER_ERROR,
resp: error
});
return;
}
callback(null);
});
});
导致错误:
{
"errno": 3,
"code": "EACCES",
"path": "/mount/fs/folder/newGroup.xml"
}
节点进程正在Linux和文件夹上运行,我尝试在其中创建此类文件的文件夹位于同一台计算机上。
而且,mkdir没有问题。
我知道,这与权限有关,但是我无法理解为什么它与创建文件夹不同以及如何解决此问题。
您应该做的第一件事是确定运行node.js应用程序的用户/组组合。
运行时的node.js继承了用户和组成员资格的文件系统权限,就像linux / unix中的任何进程一样。
您可以通过使用lsof
和ps
检查正在运行的进程来做到这一点。
简而言之(显示您的节点应用程序的运行用户):
ps xaf | grep node | awk '{ system("lsof | grep " $1) }' | awk '{ print $3 }'
您应该确定的第二件事是所讨论的文件(即/mount/fs/folder/newGroup.xml)是否具有“写入/附加”权限,您当前将其指定为fs.open()
模式。
您可以确定文件的权限(由于/mount
的挂载点指示可能的只读文件系统(例如DVD / CD驱动器上的文件系统),因此我认为它将是只读文件共享):
ls -lah /mount/fs/folder/newGroup.xml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.