必须先安装buffalo CLI再执行buffalo new;常见失败原因包括Go版本低于1.21、$GOPATH/bin未加入PATH、无法访问GitHub;生成需在空目录且go.mod模块名须匹配项目名;纯API可删assets/templates/public等,但actions/app.go/main.go不可删。

必须先装好 buffalo CLI,再用 buffalo new 生成项目;没装 CLI 就跑命令,直接报 command not found。
buffalo CLI 安装失败的三个典型原因
常见错误现象:go install github.com/gobuffalo/cli/cmd/buffalo@latest 报 cannot find module providing package,或执行 buffalo version 提示找不到命令。
- Go 版本低于 1.21:运行
go version确认,旧版本会编译失败;推荐直接装 Go 1.26.0(当前稳定兼容版) -
$GOPATH/bin没进系统PATH:执行go env GOPATH得到路径后,手动把$GOPATH/bin加进 shell 的PATH(如 zshrc 或 bash_profile),然后新开终端 - 网络无法访问 GitHub:改用预编译包——去
https://github.com/gobuffalo/cli/releases下载对应系统的buffalo_*.tar.gz,解压后把buffalo二进制丢进/usr/local/bin/并chmod +x
buffalo new 生成项目时容易踩的坑
执行 buffalo new myapp 看似简单,但目录、参数、模块状态稍有不对就会中断退出。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 必须在空目录下运行,否则报错退出(CLI 不会覆盖已有文件)
- 若当前目录已存在
go.mod,但模块名和项目名不一致(比如go mod init example.com/foo,却执行buffalo new bar),CLI 会拒绝生成 - 加
--api参数可跳过assets/、templates/和前端构建逻辑,适合纯 API 项目;不加则默认生成全栈结构(含 webpack、plush 模板等) - 生成后立刻检查
go.mod是否包含github.com/gobuffalo/buffalo及其依赖,缺失说明模块初始化失败,需手动go mod tidy
生成后的项目结构哪些目录可以删
刚生成的项目包含大量开发期组件,但并非所有都必需。是否保留取决于你的目标场景:
- 纯 JSON API 服务:可安全删除
assets/、templates/、public/(只要你不调用app.ServeFiles)、node_modules/和webpack.config.js - 需要数据库迁移:保留
models/、grifts/和config/database.yml;否则可删掉整个models/和grifts/ - 不需要热重载:删掉
buffalo dev相关依赖(如github.com/gobuffalo/buffalo-plugins),改用go run main.go启动更干净 - 注意:别删
actions/、app.go、main.go——它们是路由和入口核心,删了就跑不起来
真正卡住人的不是“怎么生成”,而是生成后没意识到哪些是骨架冗余、哪些是运行刚需。尤其当团队从其他框架转来,容易把 templates/ 或 assets/ 当成必须项,结果部署时多出一堆无用构建步骤和攻击面。

















