簡體   English   中英

帶有選項'a'的Node.js fs.open生成EACCES錯誤

[英]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中的任何進程一樣。

您可以通過使用lsofps檢查正在運行的進程來做到這一點。

簡而言之(顯示您的節點應用程序的運行用戶):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM