正确命令是go get -u github.com/beego/beego/v2和go get -u github.com/beego/bee/v2,顺序不可颠倒;需先go mod init、加gopath/bin到path、运行go mod tidy,并同步更新import路径与启动函数为v2格式。

go get 必须带 -u 且路径含 /v2
不加 -u 会拉取本地缓存的旧版(比如 Windows 下 GOPROXY 失效时卡在 v1.12.x),哪怕你敲的是 github.com/beego/beego/v2,Go 也会从缓存里硬塞一个不匹配的 zip 包出来。路径漏写 /v2 或沿用 github.com/astaxie/beego,编译直接报 no required module provides package 或 undefined: beego.Run。
- 正确命令只有两个,顺序不能反:
go get -u github.com/beego/beego/v2→go get -u github.com/beego/bee/v2 - 如果提示
no required module provides package,说明当前目录没初始化模块,先跑go mod init myapp - v2 和 v1 的模块路径完全割裂,混用一次
import "github.com/astaxie/beego"就会让整个go.sum校验链断裂
GOPATH/bin 必须显式加入 PATH
bee 二进制默认生成在 $GOPATH/bin,但终端找不到命令,90% 是因为该路径没进系统 PATH。别往 $GOROOT/bin 手动复制——那是 Go 自身工具的地盘,放错会导致后续 go 命令异常。
- 验证方式:运行
go env GOPATH,再检查对应路径下的bin/bee(Linux/macOS)或bin/bee.exe(Windows)是否存在 - Mac/Linux:把
export PATH=$PATH:/Users/xxx/go/bin写进~/.zshrc;Windows:在系统环境变量里补全%USERPROFILE%\go\bin - 改完必须新开终端,再执行
bee version确认输出不是command not found
项目初始化后立刻 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 和启动函数必须同步更新
装了最新 beego/v2,但代码还用着 v1 的写法,bee run 一定会崩。最常踩的坑就是 undefined: beego.Run,这说明迁移没做完,不是安装失败。
- 旧导入:
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 }
这些不是可选项,是 v2 的硬性约定。哪怕只有一处漏改,编译就过不去,不会“勉强运行”。重装解决不了代码层面的不兼容。











