我收到错误 EACCES: permission denied, open '/root/.pm2/module_conf.json' error after npm start 命令

Posted

技术标签:

【中文标题】我收到错误 EACCES: permission denied, open \'/root/.pm2/module_conf.json\' error after npm start 命令【英文标题】:I am getting error EACCES: permission denied, open '/root/.pm2/module_conf.json' error after npm start command我收到错误 EACCES: permission denied, open '/root/.pm2/module_conf.json' error after npm start 命令 【发布时间】:2021-09-13 12:50:43 【问题描述】:

当尝试运行 npm start 时,我收到错误:

Error: EACCES: permission denied, open '/root/.pm2/module_conf.json'
    at Object.openSync (node:fs:582:3)
    at Object.readFileSync (node:fs:450:35)
    at Object.Configuration.getAllSync (/usr/local/lib/node_modules/pm2/lib/Configuration.js:299:26)
    at Object.Configuration.getSync (/usr/local/lib/node_modules/pm2/lib/Configuration.js:270:30)
    at new API (/usr/local/lib/node_modules/pm2/lib/API.js:117:44)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/binaries/CLI.js:22:11)
    at Module._compile (node:internal/modules/cjs/loader:1109:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
/usr/local/lib/node_modules/pm2/node_modules/@pm2/agent/src/InteractorClient.js:58
          if (stats.uid === 0) 
                    ^

TypeError: Cannot read property 'uid' of undefined
    at /usr/local/lib/node_modules/pm2/node_modules/@pm2/agent/src/InteractorClient.js:58:21
    at FSReqCallback.oncomplete (node:fs:195:21)

package.json 中的命令如下所示


    "scripts": 
        "start": "pm2 start ./node_modules/laravel-echo-server/dist/index.js"
    ,
    "dependencies": 
        "laravel-echo-server": "^1.6.2",
        "save": "^2.4.0"
    

但是如果我在终端运行命令 pm2 启动 ./node_modules/laravel-echo-server/dist/index.js 它工作正常

/app # pm2 start ./node_modules/laravel-echo-server/dist/index.js
[PM2] Starting /app/node_modules/laravel-echo-server/dist/index.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1   │ index          │ default     │ 1.6.2   │ fork    │ 13626    │ 0s     │ 0    │ online    │ 0%       │ 7.6mb    │ root     │ disabled │
│ 0   │ laravelEcho    │ default     │ 1.6.2   │ fork    │ 13608    │ 1s     │ 1207 │ online    │ 0%       │ 69.6mb   │ root     │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. Type 'pm2 save' to synchronize.

在互联网上搜索问题的解决方案后,我看到了一个可能的解决方案,但它也对我不起作用。 此解决方案是创建一个生态系统.config.js 文件 这是此解决方案的一个示例,但它也不起作用

package.json


    "scripts": 
        "start": "pm2 start ecosystem.config.js"
    ,
    "dependencies": 
        "laravel-echo-server": "^1.6.2",
        "save": "^2.4.0"
    

ecosystem.config.js

module.exports = 
    apps : [
        
            name: "laravelEcho",
            script: "./node_modules/laravel-echo-server/dist/index.js",
            args : "start"
        
    ]

也许这在寻找问题时会有所帮助,我正在使用 Docker Dockerfile

FROM node:alpine

WORKDIR /app

RUN npm install pm2:2.9.2 -g && pm2 update

EXPOSE 8888

可能是什么问题?

【问题讨论】:

看起来像用户权限许可 【参考方案1】:

不确定以 root 身份运行它是否很棒,在 pm2s git repo 上查看用户访问权限:Starting PM2 as a non-root user is broken

【讨论】:

【参考方案2】:

我认为您可以通过以 su 身份运行来修复“权限被拒绝”,因此只需运行 sudo npm start 但因为我无法在 js 中编码,我无法帮助您解决错误,对不起!:/ 希望能帮到你一点点!!

【讨论】:

顺便问一下你是在linux还是mac?因为如果你在 Windows 上,你必须以管理员身份运行它 我使用 linux Ubuntu 和 docker 关于 sudo,默认情况下 docker 容器以 root 用户身份运行,不幸的是我不能在 docker 中使用 sudo 命令 ***.com/questions/50639690/… 看这里我想这可以帮助你,有一些关于chown 我试过 ``` /app # chown -R $(whoami) ~/.pm2 ``` 之后 ``` cd ~/.pm2 chown -R $(whoami) module_conf.json但它也不起作用

以上是关于我收到错误 EACCES: permission denied, open '/root/.pm2/module_conf.json' error after npm start 命令的主要内容,如果未能解决你的问题,请参考以下文章

Yeoman 错误:“Errno::EACCES on line ["897"] of C: Permission denied”

Error: EACCES: permission denied, mkdir '......node-sass/build'错误解决方案

解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误

Error: EACCES: permission denied, mkdir

linux 下 root 权限执行 npm install 报错:Error:EACCES:permission denied ‘xxx‘?

node-sass安装失败的问题 stack Error: EACCES: permission denied, mkdir