概述
在远程主机上安装了 RVM 和相关工具(如 Node.js、npm、npx、pm2)后,通过 GitHub Actions 使用 SSH 执行命令时,可能会遇到以下错误提示:
plaintext
npm command not found
npx command not found
pm2 command not found
这些错误通常是因为 SSH 会话没有加载 RVM 环境配置,导致无法找到相应的命令。本文将介绍两种解决方法。
解决办法
方法一:在 GitHub Actions 中加载 RVM 配置
可以在 GitHub Actions 的工作流文件中添加加载 RVM 配置的脚本,以确保 SSH 会话能够正确识别 RVM 管理的环境。
示例代码
yaml
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: SSH and run commands
uses: appleboy/ssh-action@v0.1.8
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
npm --version
npx --version
pm2 --version
方法二:在远程主机上创建软链接
如果希望快速解决问题,可以在远程主机上为常用的命令创建软链接,使它们全局可用。不过这种方法缺乏灵活性,也失去了 RVM 的意义,因此只能作为临时解决方案。
示例命令
bash
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/pm2" "/usr/local/bin/pm2"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"