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

GitHub Actions中node_modules安装偶发静默失败及jq合并JSON报错求助

问题1:GitHub Action中npm/yarn安装静默失败导致命令执行报错

现象

自定义GitHub Action用于从OpenAPI文件生成TypeScript客户端,25%概率出现npm i/yarn install静默失败,node_modules完全未生成,后续执行npm run orval等命令时提示文件不存在;失败时安装速度异常快,重新运行工作流可恢复。

解决建议

  • 强制开启安装日志:把安装命令改成yarn install --verbose或npm install --verbose,失败时能捕获到具体错误信息(比如网络超时、缓存损坏)
  • 清理缓存后再安装:在安装步骤前添加清理缓存命令:
    yarn cache clean --all
    # 或者npm的命令
    npm cache clean --force
    
  • 增加安装重试机制:用shell脚本实现重试,避免单次网络波动导致失败:
    # 最多重试3次
    retry=3
    until yarn install; do
      retry=$((retry-1))
      if [ $retry -le 0 ]; then
        exit 1
      fi
      echo "安装失败,重试中..."
      sleep 2
    done
    
  • 确认工作目录正确性:确保安装命令是在包含package.json的目录下执行,可在安装前加pwd && ls -l检查当前路径和文件
  • 指定稳定Node版本:用actions/setup-node固定Node版本,避免版本兼容问题:
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20.x'
        cache: 'yarn' # 或npm
    

问题2:jq合并JSON时出现object与null相乘报错

现象

执行命令jq -s '.[0] * .[1]' ./file1.json ./dir/file2.json时,报错:jq: error (at client/package.json:9): object ({"author":"...) and null (null) cannot be multiplied

原因

其中一个JSON文件解析后结果为null,可能是文件不存在、内容为空或JSON格式无效。

解决建议

  • 先检查文件状态:执行命令确认两个文件存在且内容有效:
    ls -l ./file1.json ./dir/file2.json
    cat ./file1.json ./dir/file2.json
    
  • 处理null值避免报错:修改jq命令,将null替换为空对象后再合并:
    jq -s '.[0] // {} * .[1] // {}' ./file1.json ./dir/file2.json
    
  • 验证JSON格式:用jq .单独检查每个文件的格式是否正确:
    jq . ./file1.json
    jq . ./dir/file2.json
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:30:52