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

使用az vm run-command无法安装GitHub私有npm包求助

排查GitHub Actions调用az vm run-command执行npm install卡住的问题

1. 核对执行环境的用户身份与npm配置

  • az vm run-command默认使用系统服务用户执行(Windows为NT AUTHORITY\SYSTEM,Linux为root或专用服务用户),和你直接SSH登录的用户不是同一个,该用户家目录下没有你配置的.npmrc文件,或者没有读取权限。
    • 解决方法:在部署脚本里显式指定.npmrc路径,比如:
      npm i --omit=dev --userconfig /home/your-user/.npmrc
      
      或者临时通过环境变量传入PAT:
      export NPM_AUTH_TOKEN=your-github-pat
      echo "@abc:registry=https://npm.pkg.github.com/" > /tmp/temp.npmrc
      echo "//npm.pkg.github.com/:_authToken=\${NPM_AUTH_TOKEN}" >> /tmp/temp.npmrc
      npm i --omit=dev --userconfig /tmp/temp.npmrc
      
  • 检查环境变量继承情况:run-command的执行环境不会继承用户登录时的环境变量,比如代理、NODE_ENV等。如果VM处于企业内网,缺失代理配置会导致npm拉取包超时卡住。可以在脚本开头添加:
    export HTTP_PROXY=http://your-proxy:port
    export HTTPS_PROXY=http://your-proxy:port
    

2. 解决日志捕获不完整与超时问题

  • run-command的日志输出有长度限制,卡住时可能无法捕获完整错误。可以将命令输出重定向到本地文件:
    npm i @abc/packageName --verbose > /tmp/npm_debug.log 2>&1
    cat /tmp/npm_debug.log
    
    这样能查看完整的执行日志,包括隐藏的错误提示。
  • 给npm命令添加超时参数,避免无限等待:
    npm i --omit=dev --verbose --timeout=60000
    
  • 关于404日志:本地执行也出现404但不失败,是因为npm会尝试多个注册表源。可以在.npmrc里明确指定私有包的专属注册表,减少无效尝试:
    @abc:registry=https://npm.pkg.github.com/
    //npm.pkg.github.com/:_authToken=your-github-pat
    

3. 验证GitHub PAT的有效性与传递正确性

  • 确认PAT拥有repo权限(拉取私有仓库必须),且未过期。同时检查run-command环境下.npmrc的内容是否正确,比如有没有多余空格、换行:
    cat /path/to/your/.npmrc
    
  • 如果HTTPS方式一直有问题,换成SSH协议拉取私有包:
    1. 在GitHub仓库的「Settings > Deploy keys」添加VM的公钥,勾选「Allow write access」(如果需要)。
    2. 修改package.json中的依赖地址:
      "@abc/packageName": "git+ssh://git@github.com/<orga>/<repo>.git"
      
    这样无需PAT,通过SSH密钥认证拉取包。

4. 排查npm版本差异

  • 本地、VM直接执行的npm版本和run-command环境下的版本可能不一致,部分旧版本在处理私有包时存在兼容性问题。先确认版本:
    npm -v
    
    如果版本差异较大,升级或降级到稳定版本:
    npm install -g npm@8.19.4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:18:30