beego v1 已停更,必须升级到 v2:改导入路径为 github.com/beego/beego/v2,更新 go.mod 和 main.go,用 go get -u github.com/beego/beego/v2 和 go mod tidy,启动函数改为 web.run(),控制器继承 web.controller,路由与配置访问同步更新子包路径。

Beego v1 已停更,go get -u github.com/astaxie/beego 会拉到废弃版本,实际更新必须指向 v2 路径,否则项目无法启动或编译报错。
确认当前安装的是 v2 而非 v1
运行 bee version 查看输出中 Beego 行的版本号。若显示 v1.x.x 或未显示版本,说明你还在用旧路径。v2 的正确导入路径是 github.com/beego/beego/v2,不是 github.com/astaxie/beego —— 后者已归档,不再维护。
- 检查
go.mod文件里是否含github.com/astaxie/beego v1.x,有则需手动替换为github.com/beego/beego/v2 v2.3.5(以最新稳定版为准) - 执行
go list -m all | grep beego,确认输出中只有github.com/beego/beego/v2,没有astaxie相关条目 - 如果
main.go里还 import"github.com/astaxie/beego",立刻改成"github.com/beego/beego/v2/server/web"
执行 v2 正确更新命令
v2 的更新必须带 -u 且指定完整模块路径,否则 Go Modules 会缓存旧版本或跳过升级。
- 先确保在项目根目录下(含
go.mod),运行:go get -u github.com/beego/beego/v2 - 再更新配套工具:
go get -u github.com/beego/bee/v2 - 更新后立即执行:
go mod tidy,补全依赖并修正go.sum - 若提示
missing go.sum entry,不要忽略,这是模块校验失败信号,go mod tidy必须成功
更新后必检的启动与控制器代码
v2 启动函数和控制器基类都变了,只改 go.mod 不改代码,bee run 一定报 undefined: beego.Run。
-
main.go中原写法beego.Run()→ 改为web.Run()(前提是已 importgithub.com/beego/beego/v2/server/web) - 控制器结构体原继承
beego.Controller→ 改为web.Controller - 路由注册从
beego.Router改为web.Router,且参数顺序不变,但中间件注册方式不同:web.InsertFilter需显式传入阶段常量如web.BeforRouter - 配置读取从
beego.AppConfig.String("appname")变为web.AppConfig.String("appname"),注意大小写和包名
v2 的模块拆分很彻底,web、core/logs、utils 等都独立成子包,任何漏掉的 import 或路径残留都会导致编译失败——这不是“升级没完成”,而是“升级没做全”。











