我收到错误 EACCES:权限被拒绝,在 npm 启动命令后打开'/root/.pm2/module_conf.json'错误



当尝试运行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/lavel-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.

在互联网上搜索了这个问题的解决方案后,我看到了一个可能的解决方案,但对我来说也不起作用。这个解决方案是创建一个ecosystem.config.js文件这里有一个这个解决方案的例子,但它也不起作用

package.json

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

生态系统.config.js

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

也许这在查找问题时会有所帮助,我正在使用DockerDockerfile

FROM node:alpine
WORKDIR /app
RUN npm install pm2:2.9.2 -g && pm2 update
EXPOSE 8888

可能是什么问题?

不确定以root用户身份运行它是否很棒,请查看用户访问时的pm2s git-reo:以非root用户身份启动PM2会破坏

我认为你可以修复"拒绝许可";以su的身份运行,所以只需运行sudo npm start,但因为我不能用js进行编码,所以我无法帮助您解决错误,我很抱歉!:/我希望我无论如何都能帮你一点!!

相关内容

最新更新