正确安装Beego v2需执行go get -u github.com/beego/beego/v2和go get -u github.com/beego/bee/v2,确保bee version显示v2.x.x且go list -m all仅含v2路径;bee run前须cd入项目根目录、存在conf/app.conf、启用Go module并执行go mod tidy。

bee run 是新手启动 Beego 项目的最直接方式,但不配好环境、不理解模块依赖关系,大概率会卡在第一步——连 bee 命令都找不到,或者启动后报 undefined: bee.App 这类错误。
beego/v2 和 bee/v2 必须版本对齐
Beego v1(github.com/astaxie/beego)已停止维护,现在所有新项目必须用 v2。但很多人照着旧教程执行 go get github.com/astaxie/beego,结果装了废弃版本,后续 bee run 会因包路径不匹配直接失败。
- 正确安装命令是:
go get -u github.com/beego/beego/v2和go get -u github.com/beego/bee/v2 - v2 的模块路径完全重构,比如日志模块不再是
beego.BeeLogger,而是github.com/beego/beego/v2/core/logs - 如果项目里混用了 v1 的 import 路径(如
"github.com/astaxie/beego"),编译时会提示cannot find package - 检查是否装对:运行
bee version,输出中应含v2.x.x;再看go list -m all | grep beego,确认只有github.com/beego/beego/v2出现
bee run 启动失败的三个高频原因
bee run 看似一键启动,实际背后做了代码扫描、热编译监听、进程管理三件事。任一环节出问题都会静默退出或报错。
- 没在项目根目录执行:必须 cd 进
myproject/(即含main.go和conf/app.conf的目录),否则提示no app.conf found -
app.conf缺失或格式错误:v2 默认要求conf/app.conf存在,哪怕只写appname = myapp;若用bee new创建,该文件自动生成;若手动建项目,漏掉这步就起不来 - Go module 未启用或依赖未拉齐:执行
go mod init myproject+go mod tidy,否则bee run会因找不到github.com/beego/beego/v2/server/web报错
controller 方法必须以 HTTP 动词开头
Beego v2 的路由自动映射依赖方法命名规范。写一个 UserController,但方法叫 GetUser() 或 HandleLogin(),前者能被自动路由,后者不会注册到路由表里。
- 合法方法名示例:
Get()、Post()、Put()、Delete()、Head()—— 对应 RESTful 请求类型 - 如果需要自定义路径(比如
/api/v1/users/search),不能靠方法名,得显式调用beego.Router("/api/v1/users/search", &controllers.UserController{}, "get:Search") - 注意大小写:
get()(小写)无效,Get()(首字母大写)才可导出并被框架识别 - 方法签名必须是
func (c *UserController) Get(),不能少*UserController接收者,否则编译通过但路由不生效
ORM 初始化必须在 main.go 中显式调用
很多新手把 orm.RegisterModel(&User{}) 写在 models/user.go 的 init() 函数里,以为自动加载。但 Beego v2 的 ORM 不再自动扫描 models 目录,必须在 main.go 的 main() 函数开头手动初始化。
- 正确写法:在
main.go的func main()最前面加orm.RegisterDriver("mysql", orm.NewDriver())和orm.RegisterDataBase("default", "mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8") - 模型注册不能只注册结构体,还得调用
orm.RegisterModel(new(User)),且该调用需在数据库注册之后 - 如果跳过初始化步骤,
orm.Read()或orm.QueryTable()会 panic:panic: no database alias 'default' in orm - 别指望
bee run自动帮你做这些——它只管启动 HTTP server,ORM 是你自己的责任
core/logs 和 client/orm 这两个子包的导入路径和初始化顺序,错一个,整个项目就起不来。


















