首页 > 解决方案 > PM2 Process Manager 没有显示每个项目 package.json 版本的实际版本,而是 NVM 版本号

问题描述

在此处输入图像描述

我在 MacOS 上运行 PM2 列表,并且这些项目节点正在运行nvm托管节点版本。通过对versioning列的期望,它应该分别根据它们的 package.json 版本号显示单个节点进程版本。

但它显示了nvm(节点版本管理器)的版本。这很奇怪。任何人都有线索或者这是来自 PM2 的错误?这也发生在这对正在开发 MacOS 的队友身上。

标签: node.jspm2nvm

解决方案


我终于明白了逻辑是如何pm2工作的。当前设置节点由节点版本管理nvmpm2全局安装在节点版本内。

当使用以下样式启动上述过程时:

{
    ...
    script: 'npm',
    args: 'run start:auth'
    ...
}

在 pm2 config.js(启动脚本)中,它间接要求 PM2 引用 nvm 文件夹,以使用npm那里。这样,当我们通过调用pm2 info auth它来检查进程时会显示这一行,这给了我们提示,pm2 将读取文件夹package.json中的驻留~/.nvm,因此它成为 nvm 的版本。在此处输入图像描述

于是谜团解开了。

注意: PM2 会从 中读取第一个可用package.jsonrepository root,或在 中可用的某个地方script path(例如,当我们执行 时pm2 info <process>)。话虽如此,在正常情况下,我们只在生产环境中使用 pm2,并且我们倾向于使用它来启动实际的 *.js 脚本,它会正确处理 package.json 而没有任何问题。


推荐阅读