bee run热加载必须满足硬性条件:项目结构符合conf/、controllers/、routers/等标准目录约定;控制器在controllers/下且包名为controllers;main.go调用web.run();conf/app.conf存在且runmode=dev;仅.go文件变更触发重启。

直接用 bee run 就行,但必须满足几个硬性条件,否则热加载根本不会触发。
beego 项目结构必须符合约定
Beego 的热加载不是“监听任意 .go 文件然后随便跑”,它只在标准项目结构下生效。bee 工具启动时会扫描特定目录,如果结构不对,改了代码也不会重启。
- 控制器文件必须放在
controllers/目录下,包名必须是controllers - 路由入口(如
main.go)需调用web.Run(),且不能手动os.Exit()或提前 panic - 配置文件
conf/app.conf必须存在,且runmode设为dev(默认就是 dev,但显式确认更稳妥) - 不支持
go mod初始化后把项目放在$GOPATH/src外的“伪模块路径”——bee v2.1+ 虽已适配 module,但热重载仍优先按传统 GOPATH 结构扫描
bee run 启动后没反应?检查这些常见卡点
终端没输出 [INFO] Restarting,大概率不是 bee 坏了,而是被某个细节拦住了。
- 保存文件后没触发:确认修改的是
.go文件(.html或.conf不会触发重启) - 报错后停住不动:Go 编译错误(比如
undefined: xxx、syntax error)会让 bee 中断监听,必须修复并保存才能恢复 - 修改了但浏览器没变:可能是浏览器缓存了响应,试试
Ctrl+F5或关掉标签页重开;也可能是模板路径写错,导致渲染的还是旧 HTML(比如MainController.Get()对应的是views/main/get.html,不是views/index.html) - Linux/macOS 下权限问题:如果
bee二进制没有执行权限,bee run会静默失败,运行前先chmod +x $GOPATH/bin/bee
热加载期间 session 丢失是正常的
每次 bee run 重启都是完整进程替换,内存里的 memory Session provider 数据必然清空——这不是 bug,是设计使然。
- 开发期想保留登录态?换用
file或redisSession provider,配置在conf/app.conf中:sessionprovider = file - 别在热加载阶段测试“用户长时间在线”逻辑,这类场景必须切到真实部署环境验证
- 注意:Session ID Cookie 默认带
HttpOnly和Secure标志,本地http://localhost下Secure会导致 Cookie 不发送,需加sessioncookisecure = false
真正容易被忽略的,是热加载只响应 .go 文件变更,且完全不感知 views/ 或 static/ 的改动——改完 HTML 或 JS,得手动刷新页面,别等它自动 reload。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











