Buffalo 项目必须严格按顺序执行 go mod tidy 和 yarn install,缺一不可;先确保 Go 依赖完整(含子依赖如 pop/v6),再安装 Node.js 依赖(含 webpack),插件需离线安装并禁用自动检查。

Buffalo 项目依赖必须分 Go 和 Node.js 两层独立管理,缺一不可;跳过任一层都会导致 buffalo dev 启动失败或 panic。
go mod tidy 是启动前强制步骤,不是可选优化
Buffalo CLI 生成的 go.mod 只声明顶层模块(如 github.com/gobuffalo/buffalo),但运行时真正需要的是子依赖(比如 github.com/gobuffalo/pop/v6、github.com/gobuffalo/plush)。不执行 go mod tidy,后续调用 buffalo db migrate 或访问数据库时会直接 panic,错误信息类似 panic: unknown dialect "postgres"——本质是驱动没拉下来。
- 必须在项目根目录执行:
go mod tidy - 若提示
cannot find module providing package,大概率是 Go 版本低于 1.21 或 GOPROXY 未配置;临时解决:加环境变量export GOPROXY=https://goproxy.cn,direct - 别信 “先跑起来再补依赖” ——
buffalo dev启动瞬间就会加载 models,没依赖等于没入口
npm install / yarn install 不能跳过,哪怕你删 assets/
Buffalo 默认在 buffalo dev 启动时尝试初始化 Webpack 构建流程。如果 node_modules 不存在,它不会优雅降级,而是直接报错退出,提示 command not found: webpack 或 Cannot find module 'webpack'。即使你计划立刻删掉 assets/ 目录,首次也得走完这步。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 推荐用
yarn install而非npm install:Yarn 缓存更稳,多包并发安装快得多 - 加速技巧:进
assets/目录后执行yarn config set registry https://registry.npm.taobao.org,再运行yarn install --frozen-lockfile --network-concurrency 16 - 纯 API 项目?创建时就加
--skip-yarn:buffalo new myapi --api --skip-yarn,省掉无谓等待
插件依赖要单独 install,且缓存位置固定
Buffalo 插件(如 buffalo-pop、buffalo-webpack)不是 go.mod 里的普通包,而是 CLI 运行时动态加载的二进制。每次 buffalo dev 都会检查更新,网络差时卡在 checking for updates... 十几秒。
- 离线安装法:有网机器上执行
buffalo plugins install github.com/gobuffalo/buffalo-pop/v3,插件二进制会落进$HOME/.buffalo/plugins/;复制整个目录到目标机对应路径即可复用 - 禁用自动检查:在
config/env.go中app.Init()调用前插入os.Setenv("BUFFALO_PLUGIN_CHECK", "false"),否则无效 - 注意:插件名必须带完整路径和版本号,写成
buffalo-pop或v3单独都不认
最常被忽略的点是:Go 依赖和 Node.js 依赖的安装顺序不能颠倒。必须先 go mod tidy,再 yarn install —— 因为某些 Buffalo 插件(如 webpack)的构建脚本会读取 Go 的 version 或 app.Name,依赖 Go 模块解析完成。顺序错,buffalo dev 可能静默失败或报出难以定位的路径错误。

















