Buffalo CLI运行时参数基本无效,真正起作用的是环境变量和配置文件:端口须用BINDADDR=:4000、环境由BUFFALO_ENV=production控制;仅-v对buffalo dev和buffalo db create生效,用于调试输出。

Buffalo CLI 命令本身几乎不接受有意义的运行时参数——所谓“--port”“--env”这类常见选项,要么被代码忽略,要么仅用于生成阶段,对实际服务行为零影响。
buffalo dev 不认 --port 和 --env
执行 buffalo dev --port 4000 或 buffalo dev --env production 不会改变端口或环境。这些参数被 CLI 显式跳过,不会传递给底层应用。
- 端口必须通过环境变量
BINDADDR=:4000控制(不是PORT=4000) - 环境由
BUFFALO_ENV=production决定,它影响environments/production.go的加载,而非命令行开关 -
buffalo dev -v是唯一真正生效的 flag,用于打印启动日志和连接串,仅调试用
buffalo db create 必须加 -v 才能看清失败原因
buffalo db create 表面静默,失败时往往只报 generic error,根本看不出是连不上、权限不够还是 dialect 没填。加 -v 是刚需:
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
-
buffalo db create -v会输出拼出的完整连接串(如host=localhost port=5432 user=postgres dbname=postgres),一眼确认 host/port/user 是否符合本地数据库监听配置 - 若输出中
dbname是空的,说明database.yml里对应环境的url字段为空,且dialect未设(尤其--api项目默认留空) - 没加
-v就报错?先别改代码,直接跑psql -U postgres -h localhost -d postgres验证基础连通性
buffalo test 只跑内置 HTTP 测试,不扫 xxx_test.go
buffalo test 不是 go test 的封装,它只启动 app 并运行 actions/actions_test.go 里硬编码的集成测试函数(如 TestApp)。你写的 models/user_test.go 或 actions/users_test.go 中的 TestCreateUser 完全不会被执行。
- 要跑单元测试,必须用原生命令:
go test ./models、go test ./actions -v - 如果测试依赖 Buffalo 初始化(比如需要
app.Pop()),得在测试函数里手动调用actions.App()或复用actions.TestApp() - CI 中建议分两步:
buffalo test验证路由和中间件 +go test ./... -short跑逻辑层,后者需在测试里用if testing.Short() { t.Skip() }跳过耗时操作
真正起作用的从来不是命令参数,而是环境变量、YAML 文件中的字段值、Go 代码里的硬编码路径,以及你有没有在正确的地方改了正确的文件——比如想换数据库,改 database.yml 不如直接设 DB_URL;想加新路由,别碰 main.go,去改 config/routes.go 或 actions/app.go 里的 App() 函数。

















