生产环境必须用Fiber v2,v3仍为测试版易致CI/CD失败;v2要求Go≥1.21,v3强制Go≥1.24;安装须用go get github.com/gofiber/fiber/v2并import对应路径;初始化禁用fiber.Default(),应使用fiber.New()按需添加中间件。

生产环境必须用 v2,别碰 v3 —— 它还没稳定,CI/CD 流水线里容易因版本漂移挂掉。
Go 版本不匹配是静默失败的主因
运行 go version 检查当前版本。Fiber v2 要求 go 1.21+,v3 强制 go 1.24+。低于要求时 go get 不报错,但拉下来的可能是旧版或损坏依赖。
- 升级 Go:用
go install golang.org/dl/go1.24@latest下载后执行go1.24 download - 验证:升级后跑
go version确保输出含go1.24或对应目标版本 - 别跳过这步——很多 “安装成功但路由不生效” 的问题根源就在这
go get 命令必须带 /v2 后缀
直接 go get github.com/gofiber/fiber 会拉取 v1(已归档),而 v1 不兼容 v2 的 API 和中间件签名。
- 正确命令:
go get github.com/gofiber/fiber/v2 - import 语句必须同步写成:
import "github.com/gofiber/fiber/v2" - 如果项目里混用
v2和v3的 import 路径,编译会失败,且错误提示不明确(常见报错:cannot use ... (type *fiber.Ctx) as type *v3.Ctx)
初始化不能用 fiber.Default()
fiber.Default() 是调试玩具,不是生产入口。它默认启用 Logger、Recover、RequestID 三个中间件,其中 Logger 在高并发下每秒写几百行带 Authorization 头的日志,I/O 直接拖垮 QPS。
- 上线唯一安全起点:
app := fiber.New() - 按需加中间件:debug 环境才加
logger.New();生产恢复用recover.New(recover.Config{EnableStackTrace: false}) - 开发阶段可临时用
fiber.Default()快速跑通逻辑,但上线前必须替换成fiber.New()并清空中间件列表
真正容易被忽略的是 fiber.Ctx 的复用机制——它不是每次请求新建的,而是从池里取的。如果你在 handler 里用 c.Locals() 存上下文数据又没清理,下一个请求可能读到上一个请求残留的值。


















