Beego v2 是当前唯一可安装、可运行、有维护的版本,v1 已停更;安装需执行 go get -u github.com/beego/beego/v2 和 go get -u github.com/beego/bee/v2,路径必须含 /v2,导入须用 github.com/beego/beego/v2/server/web,启动用 web.Run()。

Beego v2 是当前唯一可安装、可运行、有维护的版本,v1 已停更且与 Go Modules 冲突;所谓“安装失败”,90% 是因为漏了 -u、路径没写 /v2、$GOPATH/bin 没进 PATH,或没启用模块代理。
go get 必须带 -u 且路径含 /v2
Beego v2 和 v1 的模块路径完全不兼容,任何沿用 github.com/astaxie/beego 或漏写 /v2 的写法都会导致编译报错或 undefined: beego.Run。正确命令只有两个,顺序不能反:
go get -u github.com/beego/beego/v2go get -u github.com/beego/bee/v2
不加 -u 会拉取本地缓存的过期版本(Windows 下 GOPROXY 失效时尤其常见),最终卡在 v1.12.x 或提示 no required module provides package。如果遇到后者,先执行 go mod init myapp 初始化模块再重试。
bee 命令找不到?检查 $GOPATH/bin 是否在 PATH 中
bee 二进制默认生成在 $GOPATH/bin,不是 $GOROOT/bin。放错位置或没加进 PATH,终端就识别不了命令。
- 运行
go env GOPATH查看路径(如/Users/xxx/go) - 确认该路径下存在
bin/bee(macOS/Linux)或bin/bee.exe(Windows) - 把完整路径(如
/Users/xxx/go/bin)加入系统PATH,然后新开终端验证:bee version - Mac/Linux 用户别手动复制到
$GOROOT/bin——那是 Go 自身工具区,放错会导致后续go命令异常
项目创建后立刻执行 go mod tidy
bee new demo 生成的项目里,go.mod 已声明依赖,但 go.sum 还没同步,直接 bee run 会报 missing go.sum entry。这不是 Beego 的问题,是 Go Modules 的标准校验行为。
- 进入项目根目录(含
main.go和go.mod) - 只做一件事:
go mod tidy - 若仍失败,大概率是代理未生效:执行
go env -w GOPROXY=https://goproxy.cn,direct - 极少数情况是本地模块缓存损坏,可清空:
go clean -modcache,再go mod tidy
main.go 里的 import 和 web.Run() 必须匹配 v2 规范
这是最常踩的坑:bee run 报 undefined: beego.Run,说明代码还在用 v1 写法,但实际装的是 v2。
- 旧导入:
import "github.com/astaxie/beego"→ 必须改为import "github.com/beego/beego/v2/server/web" - 旧启动:
beego.Run()→ 必须改为web.Run() - 控制器继承也要改:
type MainController struct { beego.Controller }→ 改为type MainController struct { web.Controller } - 这些改不动,
go build或bee run都会直接报错,不会“勉强运行”
真正卡住人的从来不是命令本身,而是 go env GOPROXY 没生效、go mod init 漏掉、或者 import 路径里那个 /v2 多打了一个空格——这些细节不显眼,但一错就全崩。


















