缓存残留导致安装失败或bee命令不可用,90%是go clean -modcache未执行或goproxy未生效;需依次清模块缓存、启用代理、初始化模块,并确保gobin在path中且代码适配v2新api。

直接结论:缓存残留导致安装失败或 bee 命令不可用,90% 是 go clean -modcache 没执行,或 GOPROXY 未生效,不是 Beego 本身的问题。
为什么 go get -u 装不上或装错版本
常见现象是执行 go get -u github.com/beego/beego/v2 后,bee version 报 command not found,或 main.go 里 import github.com/astaxie/beego 还能编译通过——说明旧版 v1 的缓存还在起作用。
根本原因有两个:
-
go mod缓存($GOMODCACHE)里混着 v1 和 v2 的旧包,go get -u会优先复用本地缓存而非拉取远程最新 - 没启用模块代理(
GOPROXY),尤其在国内网络环境下,go get会卡住或降级到过期 commit
清理三步必须做全
顺序不能错,漏一步都可能白清:
- 执行
go clean -modcache—— 清掉所有已下载的模块(含astaxie/beego、beego/beego/v2等所有变体) - 确认代理生效:
go env -w GOPROXY=https://goproxy.cn,direct(Windows 用户注意用双引号包裹 URL) - 确保当前在模块路径下:
go mod init myapp(若提示no required module provides package,就说明还没初始化模块)
bee 命令找不到?检查 $GOBIN 是否在 $PATH
即使 go get -u github.com/beego/bee/v2 成功执行,bee 二进制默认生成在 $GOBIN 目录(通常是 $GOPATH/bin),但该路径未必在系统 PATH 中。
验证方式:
- 运行
go env GOBIN看输出路径 - 运行
ls $(go env GOBIN)/bee(Mac/Linux)或dir %USERPROFILE%\go\bin\bee.exe(Windows)确认文件存在 - 若存在但终端不识别,就把该路径加进
PATH,然后重启终端
重装后仍报 undefined: beego.Run
这是最典型的“以为装了 v2,其实代码还连着 v1”的症状。v2 已移除全局 beego.Run(),入口必须用 web.Run(),且控制器要继承 web.Controller。
检查点:
- import 是否为
github.com/beego/beego/v2/server/web(不是astaxie/beego) -
main.go中是否写的是web.Run()(不是beego.Run()) - 项目
go.mod文件里是否只含github.com/beego/beego/v2,不含任何astaxie/beego行
哪怕只有一处残留的 v1 导入,Go 就会把整个依赖图拉回 v1 生态,后续所有行为都会偏离预期。











