Github Actions Node.js CI工作流执行报错求助
解决Github Actions Node.js CI工作流报错问题
问题现象
- Node.js 18.x构建进程以退出代码32完成
- Node.js 16.x构建操作被取消
- 两个版本构建均提示:
actions/checkout@v2、actions/setup-node@v1使用已弃用的Node.js 12,将强制在Node.js 16上运行 - 报错触发于
run npm test步骤
问题原因
- 旧Action兼容性问题:
actions/checkout@v2和actions/setup-node@v1依赖已淘汰的Node.js 12,当前Github Actions强制用Node.js 16运行这些旧Action,容易引发兼容性异常。 - 服务与测试时序冲突:
npm start &是后台启动服务,但未等待服务完全就绪就执行npm test,导致测试无法连接到服务,进而引发报错(退出码32通常关联进程启动失败或资源异常,操作取消多因测试超时)。
修复方案
升级Action版本
将actions/checkout@v2升级至actions/checkout@v4,actions/setup-node@v1升级至actions/setup-node@v4,这两个新版本基于Node.js 20,完全适配Github Actions的运行环境,可消除弃用警告。修复服务启动时序
不要用后台启动的方式,确保服务完全就绪后再执行测试。推荐使用wait-on工具:- 本地执行
npm install wait-on --save-dev,提交package.json变更至仓库 - 修改CI步骤,启动服务后等待服务端口就绪,再执行测试
- 本地执行
修改后的完整CI配置文件
name: Node.js CI on: workflow_dispatch: push: pull_request: jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x, 18.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' # 可选:添加npm缓存加速构建 - run: npm ci - run: npm start & npx wait-on http://localhost:3000 # 替换为你的服务实际运行端口 - run: npm test
内容的提问来源于stack exchange,提问作者jennifer
相关产品推荐
相关产品推荐

