You need to enable JavaScript to run this app. GitHub Actions CI中npm test任务持续运行不结束的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions CI中npm test任务持续运行不结束的问题排查

任务持续挂起的核心原因
  • 最直接的挂起诱因:package.json中的test脚本为 nodemon --exec babel-node spec/run.js。nodemon是面向本地开发的常驻型文件监听工具,启动后会持续监听文件变更、自动重启进程,本身没有执行完主动退出的逻辑。本地开发时你可以手动终止进程,但GitHub Actions是无交互的自动化环境,会一直等待测试进程主动返回退出码,自然就会出现任务永远不结束的状态。
  • 配置类连带问题:
    • package.json的devDependencies块中重复声明了两次"eslint-watch": "^7.0.0",会导致npm ci环节直接依赖校验失败,哪怕解决了挂起问题也无法走完流程
    • 工作流配置中Node版本矩阵列出的10.x、12.x、15.x均已停止官方维护,和当前版本的actions/setup-node存在兼容性问题,容易出现安装异常、行为不符合预期的情况
可落地的配置调整方案
  • 拆分本地开发和CI环境的测试脚本,去掉CI流程里的nodemon依赖:
    • 把根脚本test修改为单次执行、运行完自动退出的形式:"test": "babel-node spec/run.js"
    • 如果本地需要监听文件变化自动跑测试,可以单独新增一个专用脚本:"test:watch": "nodemon --exec babel-node spec/run.js",这样既不破坏本地开发体验,也能保证CI环境的测试进程执行完正常退出
  • 修正package.json里的依赖配置,删除重复的eslint-watch声明,保证npm ci可以正常完成依赖安装
  • 优化工作流的Node版本矩阵,替换掉已停止维护的旧版本,比如将原有的[10.x, 12.x, 14.x, 15.x]调整为长期维护的LTS版本列表;同时升级工作流中引用的actions/checkout、actions/setup-node的版本,避免旧版action的兼容bug
  • 配置修改完成后,可以先在本地手动执行npm test,确认脚本运行完成后会自动正常退出、没有残留常驻进程,再推送到分支触发CI校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 03:54:03