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

使用Bullet Train框架时,bin/dev按Ctrl+C后自动重启的问题排查

问题原因及解决办法

可能的原因

  • Foreman进程管理器的默认重启机制:bin/dev底层依赖Foreman管理Procfile中的所有进程,默认逻辑下,如果某个进程未正常退出(比如Ctrl+C触发的中断信号没被进程正确处理),Foreman会自动重启该进程,直到收到第二次中断信号才会终止所有进程。
  • Yarn Watch进程的信号处理异常:带--watch的Yarn构建命令(如yarn build --watch)可能未正确响应SIGINT中断信号,导致进程被强制杀死而非正常退出,Foreman会判定为进程崩溃,进而触发自动重启。

解决办法

  1. 禁用Foreman的自动重启
    修改bin/dev脚本里的Foreman启动命令,添加--no-restart参数:
# 原bin/dev中的命令通常为
foreman start -f Procfile.dev
# 修改为
foreman start -f Procfile.dev --no-restart

这样所有进程退出后不会被自动重启,一次Ctrl+C就能终止全部进程。

  1. 修复Yarn Watch进程的信号响应
    单独测试某个带--watch的Yarn命令,比如运行yarn build --watch,按Ctrl+C观察是否能正常退出。如果不能,尝试添加参数让它正确处理信号:
  • 若使用Webpack,可添加--no-stdin:
    js: yarn build --watch --no-stdin
    
  • 若使用Vite,确保使用最新版本,或尝试添加--force-exit参数(部分版本支持)。
  1. 调整Sidekiq的退出超时
    Sidekiq的-t 25参数设置了作业超时25秒,退出时可能需要等待正在运行的作业完成,导致Foreman误判进程异常。可以尝试调整超时时间,或添加--stop-timeout参数让Sidekiq更快退出:
worker: bundle exec sidekiq -t 25 --stop-timeout 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:10:13