Fiber v2需Go≥1.21,必须用fiber.New()禁用默认中间件,StrictRouting为true时需显式处理尾部斜杠,*fiber.Ctx对象复用需手动拷贝字符串切片。

直接用 go get github.com/gofiber/fiber/v2 能装上,但大概率跑不起来——Go 版本不对、中间件默认开启、StrictRouting 导致 404,三者任一踩中就会卡在“Hello World”之后。
确认 Go 版本再敲命令,否则静默失败
Fiber v2 要求 Go ≥ 1.21,v3 要求 ≥ 1.24。运行 go version 查看当前版本;若低于要求,go install golang.org/dl/go1.24@latest 下载后执行 go1.24 download。跳过这步,go get 可能拉到旧版或报错不明确,尤其在 CI 环境里会因 GOPROXY 缓存导致版本漂移。
只用 v2,别碰 v3 测试版
生产项目必须用 go get github.com/gofiber/fiber/v2。v3 截至 2026 年 10 月仍为测试阶段,文档不全、fiber.NewWithCustomCtx 等新 API 在流水线中易出错,且 v2/v3 的 import 路径不能混用。真要试 v3,得同步升级 Go 至 1.24+,并彻底清理 go.mod 中所有 v2 引用。
初始化必须用 fiber.New(),禁用 fiber.Default()
fiber.Default() 默认加载 Logger、Recover、RequestID,每秒写几百条日志,TTFB 增加 0.3–0.8ms,小内存设备直接 OOM。正确写法是:
app := fiber.New()
// 按需加中间件,例如:
// app.Use(logger.New()) // 仅 debug 环境
// app.Use(recover.New(recover.Config{EnableStackTrace: false})) // 生产关堆栈
开发时可用 Default() 快速验证逻辑,但上线前必须替换成 New() 并清空中间件列表。
第一个路由 404?先查 StrictRouting
注册了 app.Get("/users", h),但访问 /users/ 返回 404,不是代码问题,是 Fiber 默认 StrictRouting: true。解决方案只有两个:
- 显式注册两条:
app.Get("/users", h)和app.Get("/users/", redirectHandler) - 加中间件统一重定向:
if strings.HasSuffix(c.Path(), "/") && c.Path() != "/" { c.Redirect(strings.TrimSuffix(c.Path(), "/"), 301) }
千万别设 StrictRouting: false——当同时存在 /users 和 /users/:id 时,/users/123 可能被前者匹配,c.Params("id") 拿不到值,问题更难定位。
最容易被忽略的是 *fiber.Ctx 的生命周期:它被复用,所有从 c.Params()、c.QueryParam() 拿到的字符串切片只在 handler 内有效;跨请求保存引用会导致数据污染。需要持久化时,必须用 utils.CopyString() 或手动 copy() 缓冲区。


















