将Node.js从v10.16更新到v10.32后,未检测到PM2,但使用ps aux检查时运行正常。即使在系统重新启动时,PM2也能正常运行,尽管手动PM2命令会导致以下类型的错误。
pm2 list pm2:命令未找到
将Node.js切换回10.16,PM2命令再次可用。fyi PM2最初安装在v10.16下。
在v10.32中尝试PM2 install命令npm install pm2 -g,但必须使用命令npm install pm2 -g --unsafe-perm才能运行。
Node.js v10.16现在运行PM2 v10.1。Node.js v10.32现在运行PM2 v10.8。
这是保持PM2版本同步并与Node升级/更改一起工作的正确方法吗?在安装每个新版本的Node后是否需要进行此操作?
7条答案
按热度按时间jtw3ybtb1#
在控制台中:
pm2 save
--首先确保正确保存了所有进程npm install pm2 -g
--然后从NPM安装最新的PM2版本pm2 update
--最后更新内存中的PM2进程xxe27gdn2#
在Node更新后,如果不重新安装PM2,似乎就没有办法了:-(
字符串
但重新安装pm2是不够的,有些东西仍然是坏的,即使它似乎工作,日志是没有更多的真实的时间例如我的热修复:
型
eit6fx6z3#
更新node.js版本后,不要忘记重新构建包:
字符串
nhjlsmyf4#
当你切换节点版本时,你也切换了包,所以你需要在节点更新时重新安装pm2。幸运的是,这种情况并不经常发生。
你可以做一个shell脚本来一次性完成这两件事。
对于unsafe-perm的问题,只有当你以root身份安装pm2时,它才会出现,当你认为pm2对你的机器进程有很大的控制权时,它是有意义的。
bq3bfh9z5#
我尝试了很多次不同的组合,但似乎仍然不是很稳定和智能的解决方案.因此,我列出了一些逻辑,我可以想到的东西,这可能是你可以应用和监控结果,因为你升级和编写脚本.
基本上,在我的情况下,我们有一堆应用程序运行在Node下。所以当你需要
PM2
来启动另一个应用程序时,事情变得复杂起来,这些应用程序也安装在Node Version Manager下,比如NVM
。前任我有
字符串
PM2安装在:
型
由于我使用App 1(由npm管理的NodeJS应用程序)。我得到:
型
所以每次我使用NVM升级时:
型
然后在此控制台中使用更新版本的nvm。例如14.7.999999
也许我(大多数时候)需要在同一个维护窗口升级我的PM2和其他应用程序,我使用ncu,
ncu -g
并升级它们。现在,应用程序最终都是新版本。例如,一个新的PM2示例(本地)和一个旧的PM2运行(内存中),旧的消费者应用程序(应用程序1)位于旧的节点文件夹中。新版本的应用程序1现在存在于新的节点应用程序文件夹中,但没有运行。
型
无论如何,如果您没有升级版本的PM2,您可能仍在寻找安装在新Node文件夹下的PM2的新路径。
型
更糟糕的是PM2在系统启动脚本中,需要重写。
/etc/systemd/system/pm2-xx.service
所以我最终放弃了所有的应用程序:
型
然后做:
型
切换到新的PM2示例
然后重新配置所有应用程序
型
然后做
型
要更新应用程序列表,请检查是否使用了正确的Node路径。
如果所有应用程序路径都已更正,请执行
型
复制并运行建议的启动脚本
型
最后运行
型
在启动时冻结列表。
z9gpfhce6#
我尝试了一些我研究过的选项。最后,我在更新Node(通过NVM)后重新安装了PM2。这很有效。
lztngnrs7#
检查NodeJS版本(LTS)。
检查pm2的最新Package的命令:
字符串
更新pm2的命令:
型
检查pm2版本的命令:
型