beego项目必须在$gopath/src下执行bee new初始化,否则包导入失败、路由未注册、模板不渲染;router.go需显式注册路由;模板路径和数据字段名须严格匹配。

Beego 项目不能在任意目录下 bee new,否则包导入失败、路由不生效、模板渲染空白——90% 的初始化问题都出在这一步。
必须在 $GOPATH/src 下执行 bee new
Beego 的 bee 工具依赖 Go 传统工作区路径解析逻辑,即使项目启用了 go.mod,它仍按 $GOPATH/src/xxx 推导 import 路径。
- 运行
go env GOPATH确认输出有效路径(如/home/user/go或C:\Users\name\go) - 进入该路径下的
src目录:cd $GOPATH/src - 再执行
bee new myapp—— 不要先mkdir myapp && cd myapp && bee new . - 错误现象:
cannot find package "myapp/controllers",本质是 Go 编译器没在$GOPATH/src下找到对应目录
routers/router.go 必须显式注册路由
Beego 不会自动扫描控制器方法,所有路由都得手动写进 routers/router.go 的 init() 函数里。
- 默认生成的
bee new项目已含beego.Router("/", &controllers.MainController{}),但若你删了或改错路径,/就会返回 Beego 默认欢迎页 - 确保控制器 import 正确:
import "myapp/controllers"(包名必须与$GOPATH/src/myapp目录名一致) - 参数必须传指针:
&controllers.MainController{},不是controllers.MainController{} - 如果只响应 GET,用
beego.Get("/", func(ctx *context.Context) { ctx.WriteString("OK") })更轻量、更直观
模板渲染失败?检查三个硬性条件是否同时满足
写 c.TplName = "index.tpl" 却白屏,大概率卡在以下任一环节:
-
views/index.tpl文件必须真实存在,且路径大小写敏感(比如放在views/admin/下就得写c.TplName = "admin/index.tpl") -
conf/app.conf中的templateleft和templateright默认已设为"{{"和"}}",除非你手动改过,否则不用动 -
main.go中必须调用beego.Run()—— 若替换成http.ListenAndServe,模板引擎根本不会启动 - 常见低级失误:传数据用
c.Data["Website"] = "beego.vip",模板却写{{.Data.Website}},正确写法是{{.Website}}
最容易被忽略的是:改完 app.conf 后没重启 bee run,配置压根没加载;还有人把项目建在桌面或文档目录,完全绕开了 $GOPATH/src,这种结构从第一步就注定跑不起来。











