GitHub Actions部署AWS EC2时npm命令不存在(错误码127)求助
解决GitHub Actions自托管EC2时"npm命令未找到"的问题
问题复现
EC2服务器本地通过nvm安装的Node.js、npm可正常使用,但GitHub Actions自托管执行时提示:
Run npm i
/home/ec2-user/actions-runner/_work/_temp/4834eb75-d660-4153-8295-0150ec5c725b.sh: line 1: npm: command not found
Error: Process completed with exit code 127.
EC2本地查询路径:
[ec2-user@ip-172-00-00-225 ~]$ which npm ~/.nvm/versions/node/v16.19.1/bin/npm [ec2-user@ip-172-00-00-225 ~]$ which node ~/.nvm/versions/node/v16.19.1/bin/node
解决方案
方法1:直接使用npm绝对路径
修改工作流中的npm命令,替换为EC2上npm的实际绝对路径:
- run: /home/ec2-user/.nvm/versions/node/v16.19.1/bin/npm i
方法2:加载nvm环境配置
在执行npm前先加载nvm初始化脚本,确保环境变量生效:
- run: source ~/.nvm/nvm.sh && npm i
或加载用户bash配置文件:
- run: source ~/.bashrc && npm i
方法3:配置工作流PATH环境变量
在工作流中直接将npm所在目录添加到PATH:
jobs: build: runs-on: self-hosted env: PATH: ${{ env.PATH }}:/home/ec2-user/.nvm/versions/node/v16.19.1/bin strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - run: npm i - run: sudo pm2 kill -a - run: sudo pm2 start index.js
问题原因
EC2上的Node.js通过nvm安装,nvm的PATH配置通常写入~/.bashrc或~/.nvm/nvm.sh中,但GitHub Actions自托管runner使用非交互式shell启动,不会自动加载用户配置文件,导致系统PATH中没有npm的路径,进而触发"命令未找到"错误。
内容的提问来源于stack exchange,提问作者rameez khan
相关产品推荐
相关产品推荐

