gpt4 book ai didi

javascript - 带有选项 'a' 的 Node.js fs.open 生成 EACCES 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:52 25 4
gpt4 key购买 nike

我正在尝试使用 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 中的任何进程一样。

您可以通过使用 lsofps 检查正在运行的进程来做到这一点。

简而言之(显示您的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com