beego v2 是唯一推荐且可用的版本,v1 已停更;安装须用 go get -u github.com/beego/beego/v2 和 go get -u github.com/beego/bee/v2,路径必须为 github.com/beego/beego/v2,启动用 web.run() 并继承 web.controller。

Beego v2 是唯一能用的版本,v1 已停更且无法在现代 Go 环境中正常工作;安装失败几乎全是环境配置或路径混用导致的。
go get 安装时必须加 -u 且指定 v2 路径
不加 -u 会导致拉取过期缓存,尤其在 GOPROXY 失效时(比如 Windows 下代理未生效)会卡在旧版 commit 上。v2 的模块路径和 v1 完全不同,不能沿用旧教程里的 github.com/astaxie/beego。
- 正确命令(顺序不能反):
go get -u github.com/beego/beego/v2和go get -u github.com/beego/bee/v2 - 如果提示
no required module provides package,说明当前不在 Go Module 环境下:先执行go mod init myapp初始化模块,再重试 - Mac/Linux 用户注意:
bee二进制默认生成在$GOPATH/bin,该路径必须出现在$PATH中,否则终端识别不到命令
bee new 后 go.mod 有依赖但 go.sum 缺失
这是 Go Modules 的校验机制触发的典型现象,不是 Beego 的 bug。项目刚创建时 go.mod 已写入依赖声明,但 go.sum 还没同步哈希值,直接 bee run 会报 missing go.sum entry。
- 进入项目根目录后立即运行:
go mod tidy - 若仍失败,大概率是
GOPROXY没生效:执行go env -w GOPROXY=https://goproxy.cn,direct - 极少数情况是本地模块缓存损坏,可清空:
go clean -modcache,再go mod tidy
main.go 启动失败:undefined: beego.Run
这是最常踩的坑——代码里还用着 v1 的写法,但实际装的是 v2。v2 把核心入口函数拆到了子包,beego.Run() 已废弃。
- 检查
main.go是否含import "github.com/astaxie/beego":这是 v1 路径,必须改成import "github.com/beego/beego/v2/server/web" - v2 启动方式变为:
web.Run(),不是beego.Run() - 控制器继承也要改:旧写法
type MainController struct { beego.Controller }→ 新写法type MainController struct { web.Controller }
真正容易被忽略的是模块路径与导入路径的一致性:哪怕只有一处用了 github.com/astaxie/beego,整个项目就可能编译失败或行为异常。v2 的模块化设计要求你明确知道每个功能来自哪个子包,比如日志要用 core/logs,路由配置在 server/web,不能靠 IDE 自动补全猜。











