必须先安装go 1.21+,再执行go install github.com/gobuffalo/cli/cmd/buffalo@latest安装buffalo cli,验证用buffalo version;若command not found需将$gopath/bin加入path。

必须先装好 Go 1.21+,再用 go install 安装 Buffalo CLI,不能靠 brew 或二进制包——否则 buffalo dev 会因找不到 gopls 或模块路径异常而卡死。
确认 Go 环境已就绪且版本达标
Buffalo 依赖 Go Modules 和 gopls 语言服务器,低版本 Go(如 1.19 以下)会导致 buffalo new 失败或 IDE 无法识别 actions.App()。运行以下命令验证:
-
go version—— 输出应为go version go1.21.x darwin/amd64或类似(Linux/macOS/Windows 均需 ≥1.21) -
go env GOPATH—— 不为空即可,现代项目不强依赖 GOPATH,但go install会默认写入$GOPATH/bin -
which go和which buffalo—— 确保两者都在 shell 的$PATH中,否则终端里认不出buffalo命令
用 go install 安装 buffalo CLI
Buffalo 官方已弃用 curl | sh 和 Homebrew 安装方式,go install 是唯一受支持的安装路径,它能确保二进制与当前 Go 工具链兼容:
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 执行:
go install github.com/gobuffalo/cli/cmd/buffalo@latest - 等待完成,检查:
buffalo version应输出类似v1.0.1的版本号(截至 2026 年 9 月最新稳定版) - 若提示
command not found,说明$GOPATH/bin未加入$PATH;在 shell 配置文件(~/.zshrc或~/.bash_profile)中追加:export PATH="$GOPATH/bin:$PATH",然后source一下
初始化项目时自动设置关键环境变量
Buffalo 不需要你手动设 BUFFALO_ENV 或 GO_ENV,它靠项目根目录下的 .env 文件和 config/buffalo-app.toml 控制行为。但有三个变量你得知道它们在哪生效:
-
GO_ENV=development:由buffalo dev自动注入,不用手设;若想强制切到测试环境,改用GO_ENV=test buffalo test -
ADDR和PORT:默认监听:3000,可在.env中覆盖,例如写入ADDR=127.0.0.1:8080;注意不要写成PORT=8080单独一行——Buffalo 只读ADDR -
DATABASE_URL:如果不想碰config/database.yml,可直接在.env里写完整连接串,例如DATABASE_URL=postgres://postgres:pass@localhost:5432/myapp_development?sslmode=disable;此时database.yml中的development区块会被完全忽略
VS Code 中必须补全的 Go 工具链
即使 buffalo new myapp 成功,VS Code 仍可能报 undefined identifier "App",这是因为缺少 gopls 和其他 Go 工具:
- 安装官方 Go 扩展(作者:
golang.go)后,按Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Go: Install/Update Tools,全选并安装 - 重点确认
gopls、dlv(调试器)、gomodifytags这三项成功安装;失败项会标红,需点击重试 - 在项目根目录建
.vscode/settings.json,内容为:{ "go.useLanguageServer": true, "go.toolsManagement.autoUpdate": true }—— 不要设go.gopath,空字符串或删掉这一行更安全
真正容易被忽略的是:Buffalo 项目启动后,buffalo dev 会动态生成 tmp/ 下的中间代码,而 VS Code 的 gopls 默认不监控该目录。如果发现 auto-completion 在 actions/app.go 里失灵,关掉窗口再重开一次,让 gopls 重新扫描整个模块树——不是配置问题,是索引延迟。










