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

通过GitHub Action运行Express服务器时工作流卡住无法自动结束是什么原因

问题原因

  • 你在GitHub Action中执行的npm run serve命令会启动一个常驻运行的Express Web服务进程,该进程会持续监听3636端口,默认不会主动退出。GitHub Action的任务会等待执行的命令返回退出码后才会标记为完成,只要服务进程不终止,任务就会一直处于运行状态,直到达到平台默认的6小时最长运行时限被系统自动回收。
  • GitHub Action本身是提供临时运行环境的CI/CD工具,设计上就不支持托管长期运行的在线服务,即便是你没有手动取消任务,服务也无法对外提供稳定的公网访问能力,任务结束后所有运行的进程都会被销毁。

解决方法

根据你的实际需求选择对应方案:

方案1:仅验证服务可用性(适合测试场景)

修改工作流步骤,把服务放到后台运行,验证通过后主动终止进程即可让任务正常结束,示例步骤如下:

- name: 启动并验证服务
  run: |
    # 后台启动服务
    npm run serve &
    # 等待服务启动完成
    sleep 3
    # 验证服务返回是否正常
    curl http://localhost:3636
    # 终止后台服务进程
    kill $!

方案2:需要长期对外提供服务

不要在GitHub Action中直接运行服务,而是将GitHub Action作为部署工具,把构建后的服务代码部署到支持长期托管Node.js服务的平台,比如云服务器、Vercel、Netlify、云函数等,工作流只负责执行部署逻辑,部署完成后直接退出即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:03