goland中bee热编译需满足三条件:项目在$gopath/src下、main.go存在且package为main、bee命令可识别;终端报“command not found”因未加载shell的path;工作目录须为含main.go的根目录;静态资源不触发重载需配bee.json;beego与bee版本必须匹配。

GoLand 里配好 bee 就能热编译,但必须满足三个硬条件:项目在 $GOPATH/src 下、main.go 存在且 package 为 main、bee 命令可被系统识别。
为什么 bee run 在 GoLand 终端里报 “command not found”
根本原因是 GoLand 的终端没读取你 shell 配置里的 $PATH,哪怕你在 zshrc 或 bash_profile 里加了 $GOPATH/bin 或 $GOBIN,GoLand 默认不加载这些。
- 检查
bee是否真能运行:在系统终端(不是 GoLand 内置 Terminal)执行which bee或bee version,确认路径和版本 - GoLand 中打开
Settings > Tools > Terminal,把Shell path改成你日常用的 shell,比如/bin/zsh或C:\Windows\System32\cmd.exe - Windows 用户若用
bee.exe,确保它不在项目根目录下“手动拷贝”,而是在GOBIN或%GOPATH%\bin中,并已加入系统环境变量 - macOS/Linux 用户可在 GoLand Terminal 里临时执行:
export PATH=$PATH:$GOPATH/bin,再试bee run
bee run 启动失败,提示 “no Go files in current directory”
这不是路径问题,是 GoLand 当前工作目录没切对 —— bee run 必须在包含 main.go 的项目根目录下执行,且该 main.go 必须属于 package main,不能是 package myapp 或其他。
- 确认项目结构符合 beego 标准:根目录下有
main.go、routers/router.go、conf/app.conf等,且main.go内含beego.Run()调用 - GoLand 右下角查看当前 Terminal 的 pwd,如果不是
$GOPATH/src/yourproject,用cd切过去;别依赖 “Open in Terminal” 自动定位,它常错位到模块子目录 - 如果用了
go mod init,beev1.x 会拒绝运行(v2+ 支持 module),建议统一用go get github.com/beego/bee/v2安装 - 执行前先跑一次
go build,验证基础编译通不通;不通就别指望bee能热编译
热编译生效但页面没更新,或修改后无反应
常见于静态资源(static/js、views/*.tpl)改动未触发重载,或浏览器缓存干扰,bee 默认只监听 .go 文件变更。
- 在项目根目录加
bee.json,显式声明监听范围:{ "dir_list": ["./", "./static/", "./views/"], "ext_list": [".go", ".tpl", ".js", ".css"] } - 启动时加参数强制刷新:
bee run -downdoc=true -gendoc=true(生成文档时顺便清缓存) - 浏览器访问时加
?v=xxx参数或禁用缓存(DevTools → Network → Disable cache) - 注意:修改
conf/app.conf不会触发自动重启,需手动Ctrl+C再bee run
真正容易被忽略的是:beego v2+ 和 bee v2+ 的兼容性。如果你用 go get github.com/astaxie/beego 装的是 v1,却用 bee/v2 启动,bee run 会静默失败或 panic。查清你 go.mod 里 beego 版本,再匹配安装对应 bee 版本 —— 这个点不验,其他配置全白搭。











