作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 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"
}
Node 进程在 Linux 上运行,我尝试在同一台机器上创建此类文件的文件夹。
此外,我对 mkdir 没有任何问题。
我明白,这与权限有关,但我不明白为什么它与创建文件夹不同以及如何解决这个问题。
最佳答案
您应该做的第一件事是确定运行您的 node.js 应用程序的用户/组组合。
node.js 在运行时继承了用户和组成员的文件系统权限,就像 linux/unix 中的任何进程一样。
您可以通过使用 lsof
和 ps
检查正在运行的进程来做到这一点。
简而言之(显示您的 Node 应用程序的运行用户):
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
关于javascript - 带有选项 'a' 的 Node.js fs.open 生成 EACCES 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997143/
我是一名优秀的程序员,十分优秀!