Beego v2 是当前唯一推荐且能正常安装用于新项目的版本,v1 已停更;安装需配对 GOPATH/GOBIN、启用模块代理、执行 go get -u github.com/beego/beego/v2 和 github.com/beego/bee/v2,导入路径必须为 github.com/beego/beego/v2/server/web,启动用 web.Run() 且控制器继承 web.Controller。

Beego v2 是当前唯一能正常安装并用于新项目的版本,v1 已停止维护且与现代 Go 模块系统冲突;绝大多数“安装失败”“命令找不到”“启动报错”问题,都源于 GOPATH/GOBIN 配置错误、模块代理未启用,或混用了 v1 和 v2 的导入路径与命令。
go get 安装 beego/v2 和 bee/v2 时必须加 -u 参数
不加 -u 会导致拉取到本地缓存的过期版本(尤其是 Windows 下 GOPROXY 失效时),最终出现 no required module provides package 或 undefined: beego.Run 等错误。
- 先确保已启用模块:执行
go env -w GO111MODULE=on - 设置国内代理(避免超时):执行
go env -w GOPROXY=https://goproxy.cn,direct - 在任意目录下运行这两条命令(顺序不能反):
go get -u github.com/beego/beego/v2go get -u github.com/beego/bee/v2 - 如果提示
no required module provides package,说明当前不在 Go 模块路径下:先go mod init myapp初始化,再重试
bee 命令找不到?检查 $GOPATH/bin 是否在 $PATH 中
bee 二进制默认生成在 $GOPATH/bin,该路径必须显式加入系统 PATH,否则终端无法识别命令。Mac/Linux 用户可运行 echo $PATH 确认,Windows 用户需检查系统环境变量。
- 查当前 GOPATH:
go env GOPATH,假设输出为/Users/xxx/go,则bee在/Users/xxx/go/bin/bee - 临时加入 PATH(仅当前终端生效):
export PATH=$PATH:/Users/xxx/go/bin - 永久生效(Mac/Linux):把上面那行写入
~/.zshrc或~/.bash_profile,然后source ~/.zshrc - 验证是否成功:
bee version应输出版本号(如v2.1.0)
bee new 创建项目后 go mod tidy 报 missing go.sum entry
这不是 Beego 的问题,而是 Go Modules 的校验机制在起作用:项目初始化时 go.mod 已声明依赖,但 go.sum 尚未同步生成。
- 进入项目根目录(即含
main.go和go.mod的目录) - 立即运行:
go mod tidy - 若仍失败,大概率是 GOPROXY 没生效:再执行一次
go env -w GOPROXY=https://goproxy.cn,direct - 极少数情况是本地模块缓存损坏,可清空:
go clean -modcache,再go mod tidy
main.go 启动失败:undefined: beego.Run 或 web.Run() not found
v2 彻底废弃了 beego.Run(),入口函数已拆至子包;控制器继承路径也变了。用 v1 写法跑 v2 代码,必报错。
- 检查
main.go的 import 是否还写着:import "github.com/astaxie/beego"→ 这是 v1 路径,必须删掉 - 正确写法是:
import "github.com/beego/beego/v2/server/web" - 启动方式改为:
web.Run(),不是beego.Run() - 控制器结构体也要改:
type MainController struct { web.Controller },不是beego.Controller - 别漏掉路由注册:比如
web.Router("/", &MainController{}),否则访问 8080 会 404
最易被忽略的一点:bee run 启动的是整个项目结构(含 routers/router.go),而手写 main.go + web.Run() 是最小启动模式——两者路径约定、配置加载逻辑不同,不要混用。首次上手建议直接用 bee new 创建完整项目,再逐步删减理解。


















