buffalo项目依赖必须手动分层安装:go mod tidy补go子依赖(如pop/v6),npm install或yarn install在assets/下装node.js依赖;二者缺一将导致buffalo dev启动失败,且cli不封装依赖安装逻辑。

Buffalo 项目不能靠 buffalo 命令自动装依赖——它不提供类似 npm install 或 go mod tidy 的封装命令,必须手动分层执行。
为什么 buffalo dev 启动失败常被误判为“没装依赖”
实际是 Buffalo 把 Go 和 Node.js 两套依赖管理完全解耦,且不干预底层工具链。它只在启动时调用 go run 和 webpack,而这两个命令失败的根源几乎全是依赖缺失或路径错位。
-
buffalo dev报cannot find package "github.com/gobuffalo/pop/v6"→ 没跑go mod tidy,不是 Buffalo 的锅 - 页面空白或控制台报
sh: webpack: command not found→npm install没在assets/目录下执行,或node_modules权限异常 - 即使
buffalo version成功,也不能说明项目依赖就绪——CLI 安装和项目依赖是两个独立状态
go mod tidy 必须在项目根目录执行
Buffalo 项目生成后,go.mod 只声明顶层依赖(如 github.com/gobuffalo/buffalo/v2),但 pop、plush、logging 等子依赖不会自动拉取。不执行这步,数据库迁移、模板渲染、中间件加载全会 panic。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 进项目目录:
cd myapp - 补全所有 transitive 依赖:
go mod tidy - 国内用户卡住时,先设代理:
go env -w GOPROXY=https://goproxy.cn,direct - 别用
go get手动加包——可能引入版本冲突,Buffalo 要求严格走go mod tidy
npm install 或 yarn install 必须在 assets/ 目录下执行
Buffalo 默认启用 Webpack 构建前端资产,哪怕你删了 assets/,buffalo dev 启动时仍会尝试执行 npm run build。而该命令依赖 node_modules 存在且包含 webpack。
- 先进入资产目录:
cd assets - 推荐用 yarn(比 npm 更稳):
yarn install --frozen-lockfile --network-concurrency 16 - 若用 npm:
npm install,但需确认package.json中scripts.build是webpack --config webpack.config.js - 用
--api创建的项目可跳过此步,但要检查app.go是否已移除assets.Pipeline()调用
最容易被忽略的硬性前提:SQLite 驱动需要系统级工具链
Linux 用户尤其容易在这里栽跟头——go mod tidy 成功不代表 SQLite 就能用。因为 github.com/mattn/go-sqlite3 是 CGO 包,运行时依赖 gcc 和 libsqlite3-dev,不是 go mod 能管到的范围。
- Ubuntu/Debian:
sudo apt install build-essential libsqlite3-dev - macOS:
xcode-select --install(确保 clang 可用),再brew install sqlite3 - 验证是否生效:
go env CGO_ENABLED必须输出"1",否则buffalo db create会静默失败 - 即使你不用 SQLite,只要项目里有
pop/soda相关代码,构建阶段就可能触发 CGO 编译










