You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置PM2通过GitHub Action触发?解决‘pm2未找到’报错

问题原因及解决办法

核心问题

你遇到的pm2: not found错误,本质是GitHub Action通过SSH执行命令时,使用的是非交互式/非登录Shell,导致环境变量PATH不包含PM2的实际路径,或者指定的PM2路径在当前Shell环境下不可用。

从日志和你提供的信息来看,虽然服务器上存在两个PM2路径,但执行脚本时的Shell环境无法访问到它们:

  • 你在package.json里指定的/usr/local/bin/pm2,在当前Shell下实际不存在(或无权限访问);
  • 另一个PM2路径/root/.nvm/versions/node/v16.19.1/bin/pm2是通过nvm安装的,但非交互式Shell默认不会加载nvm的环境配置,直接调用也会找不到。

具体解决办法

办法1:直接使用PM2的绝对路径(最直接)

把package.json里的脚本改成使用nvm下的PM2绝对路径:

"pm2:start": "/root/.nvm/versions/node/v16.19.1/bin/pm2 restart ecosystem.config.js --time"

或者在GitHub Action的SSH脚本里直接调用这个路径,跳过npm脚本:

script: |
  chown -R root /opt/project
  cd /opt/project
  yarn
  /root/.nvm/versions/node/v16.19.1/bin/pm2 restart ecosystem.config.js --time

办法2:加载nvm环境配置

如果想继续使用pm2命令而不是绝对路径,需要在执行npm脚本前先加载nvm的配置文件,因为非交互式Shell不会自动加载:

script: |
  chown -R root /opt/project
  cd /opt/project
  yarn
  source /root/.nvm/nvm.sh  # 加载nvm环境,让pm2命令可用
  npm run pm2:start

如果nvm的配置在~/.bashrc或~/.profile里,也可以换成source ~/.bashrc。

办法3:修复/usr/local/bin/pm2的软链接

如果确定要使用/usr/local/bin/pm2路径,先登录服务器检查这个软链接是否有效:

ls -l /usr/local/bin/pm2

如果显示软链接失效(比如指向不存在的路径),重新创建软链接:

ln -s /root/.nvm/versions/node/v16.19.1/bin/pm2 /usr/local/bin/pm2

同时确保该路径对SSH登录用户有执行权限。


内容的提问来源于stack exchange,提问作者sahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:53:16