node.js - PM2 Process Manager 没有显示每个项目 package.json 版本的实际版本,而是 NVM 版本号
问题描述
我在 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 会从 中读取第一个可用package.json
的repository root
,或在 中可用的某个地方script path
(例如,当我们执行 时pm2 info <process>
)。话虽如此,在正常情况下,我们只在生产环境中使用 pm2,并且我们倾向于使用它来启动实际的 *.js 脚本,它会正确处理 package.json 而没有任何问题。
推荐阅读
- batch-file - Windows 10 中 for for 循环的奇怪行为
- google-cloud-dataflow - 如何在 Cloud Dataflow 中验证基于服务帐户的身份验证
- typescript - 基于参数的firestore查询中的条件where子句
- javascript - 如何修复循环以检查复选框是否被选中,如果是,则将值附加到字符串?
- sql - 如何创建滚动总计字段?
- python - Matplotlib 对数刻度显示为整数解决方法不适用于指定的刻度
- c++ - 为什么我的数据不适合 CUDA 纹理对象?
- matlab - 在以原点为中心的凸包内画一个圆
- bash - Shell 脚本 - 如何根据列值对测试文件记录进行分组并将电子邮件发送到相应的收件人。?
- java - 如何缓存从自动完成 API 检索到的搜索结果