buffalo dev是热加载唯一入口,需满足CLI≥v0.18.0、存在buffalo.dev.yml或app.Serve()调用、在项目根目录执行三条件,否则静默失败或不触发重启。

buffalo dev 就是热加载的唯一入口,不需要额外装插件或改构建脚本;但版本、配置、端口三处不满足,它就完全不工作。
buffalo dev 命令为什么没反应或直接退出
常见现象:终端输出几行日志后立即返回 shell,服务没起来;或者卡在 “Starting application…” 不动。
- CLI 版本低于
v0.18.0:运行buffalo version确认,旧版不支持自动监听,需升级——执行go install github.com/gobuffalo/cli/v2@latest - 项目缺少启动锚点:要么存在
buffalo.dev.yml,要么main.go中调用了app.Serve();二者缺一都会导致命令静默失败 - 当前目录不是项目根目录:buffalo 会向上查找
go.mod和buffalo.dev.yml,若路径错,它可能找到别的项目甚至报 “no app found”
修改代码后没触发重启,监听失效怎么办
默认只监听 actions/、models/、templates/、assets/ 四个目录,其他路径改动不会触发重建。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 新增了自定义组件目录(如
ui/components):加参数--watch-dir ./ui/components,可多次使用该参数添加多个路径 - 模板里用了
partial引用非templates/下的文件:必须把 partial 所在目录也加入--watch-dir,否则改了 partial 内容也不会刷新 - 使用了
go:embed加载静态资源:embed 的文件不在监听范围内,改了不会触发 rebuild,得手动 touch 一个被监听的文件(比如actions/home.go)来“骗”一次重启
端口冲突、浏览器打不开、实际地址被忽略
buffalo dev 启动时若发现 :3000 被占,会自动尝试 :3001、:3002……直到找到空闲端口,并明确打印类似 Listening on http://127.0.0.1:3002 的提示。
- 务必看终端最后一行输出的实际 URL,不要惯性访问
http://localhost:3000 - 如果用 VS Code Remote-SSH 或 Docker 开发,
127.0.0.1是容器/远程机本地地址,需改成0.0.0.0:3002并确保防火墙放行 - LiveReload 需要浏览器插件才能自动刷新页面;没装插件时,改模板只会重启服务,但页面不会自动重载——这不是热加载失效,只是前端联动没配
真正容易被忽略的是:buffalo dev 的热加载本质是「进程级重启」,每次都会 kill 旧进程、编译新二进制、拉起新服务。这意味着内存 session 一定清空、数据库连接池重置、全局变量重初始化——别指望它像前端 HMR 那样保留状态。

















