PM2 Process Manager 未显示每个项目 package.json 版本的实际版本,而是显示 NVM 版本号

PM2 Process Manager is not showing the actual version from each project package.json version but NVM version number

我是 MacOS 上的 运行 PM2 列表,那些项目节点是 nvm 托管节点版本的 运行。根据对 versioning 列的期望,它应该分别根据 package.json 版本号显示各个节点进程版本。

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

我终于明白了pm2的运作逻辑。 当前设置节点由 nvm 管理并且 pm2 在节点版本中全局安装。

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

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

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

于是谜团解开了

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