必须先确认Go版本,v2要求≥1.21,v3强制≥1.24;推荐用v2,通过go mod init初始化后go get github.com/gofiber/fiber/v2;禁用StrictRouting,改用重定向处理尾部斜杠。

必须先确认 Go 版本,否则 go get 会静默失败或拉取错误版本
检查并升级 Go 版本(go version 是关键第一步)
运行 go version,若输出低于 go1.21(v2)或 go1.24(v3),就不能跳过升级。v2 支持最低 1.21+,v3 强制要求 1.24+。常见错误是看到 go1.20.12 还去执行 go get github.com/gofiber/fiber/v2,结果拉到一个不兼容的旧 commit,后续编译报 undefined: fiber.New 或中间件类型不匹配。
升级命令示例(以 1.24 为例):
go install golang.org/dl/go1.24@latest go1.24 download
之后用 go1.24 version 验证,再把 go 命令软链过去,或直接用 go1.24 替代所有 go 操作。
初始化 Go 模块并安装 Fiber v2(生产项目唯一推荐路径)
v3 截至 2026 年 10 月仍是测试阶段:文档滞后、CI/CD 流水线易因 fiber.Ctx 接口变更(v2 是指针,v3 是接口)出错、生态中间件未完全适配。除非你明确在做性能压测或尝鲜,否则别碰 v3。
正确流程:
- 在项目根目录执行
go mod init myapp(模块名不能含空格或大写字母) - 立即运行
go get github.com/gofiber/fiber/v2,不要加-u(避免意外升级到破坏性版本) - 检查
go.mod是否写入了类似github.com/gofiber/fiber/v2 v2.52.12的精确版本,而非indirect或// indirect标记
如果 go get 后 go build 报错找不到 fiber 包,大概率是模块名没生效——删掉 go.mod 和 go.sum,重新 go mod init 再试。
fiber.New() 初始化比 fiber.Default() 更安全
fiber.Default() 看起来省事,但它默认启用 Logger、Recover、RequestID 三个中间件。生产环境里,Logger 会每秒写几百条带完整请求头的日志,I/O 成为瓶颈;Recover 默认开启堆栈打印,每次 panic 都序列化整个调用链,TTFB 增加 0.5ms 以上。
正确做法是:
- 始终用
app := fiber.New()创建空实例 - 按需添加中间件:开发环境加
logger.New(),生产环境只加recover.New(recover.Config{EnableStackTrace: false}) - 若需快速验证路由逻辑,可临时用
fiber.Default(),但上线前必须替换,并手动清理中间件列表
第一个路由返回 404?大概率是 StrictRouting 在起作用
Fiber 默认开启 StrictRouting: true,这意味着 /users 和 /users/ 是两个不同路径。注册了 app.Get("/users", handler),但浏览器访问 /users/ 就会 404。
解决方式只有两种:
- 显式注册两个路径:
app.Get("/users", handler)和app.Get("/users/", handler) - 加重定向中间件,统一将结尾斜杠的请求 301 跳转到无斜杠版本(推荐)
千万别设 fiber.Config{StrictRouting: false}——当同时存在 /users 和 /users/:id 时,/users/123 可能被前者匹配,c.Params("id") 拿不到值,问题更隐蔽。











