应使用 go get github.com/gofiber/fiber/v2 安装,v2 是当前唯一适合生产环境的稳定版本;v3 尚处测试阶段且要求 Go 1.24+,生态不完善;v2 要求 Go ≥ 1.19,低于此版本会导致编译失败或 panic,必须升级;初始化需 go mod init 后显式拉取 /v2,禁用 -u 和 fiber.Default(),推荐 fiber.New() 起手。

直接用 go get github.com/gofiber/fiber/v2 安装,别用 -u 或 v3——v2 是当前唯一适合生产环境的稳定版本,v3 仍处于测试阶段,且要求 Go 1.24+,生态工具不齐,CI/CD 中易出错。
确认 Go 版本再动手
Fiber v2 要求 Go ≥ 1.19(官方文档写 ≥1.21,但实测 1.19 可用),v3 强制要求 Go 1.24+。运行 go version 检查;若低于 1.19,升级不是可选项,是必须项。常见翻车点:Go 1.18 下执行 go get 会静默拉取一个不兼容的旧版 fiber,导致后续 fiber.New() 编译失败或 panic。
- 升级推荐方式:
go install golang.org/dl/go1.21@latest→go1.21 download→ 切换默认版本 - 别依赖系统包管理器(如 apt/yum)装 Go,它们常滞后 2–3 个 minor 版本
- 检查
GOROOT和PATH是否指向新版本,避免go version和实际执行的不是同一个二进制
初始化模块并拉取 v2 依赖
在空目录下执行两行命令即可完成最小初始化:
go mod init myapp go get github.com/gofiber/fiber/v2
注意三点:
-
go get -u不必要,反而可能把github.com/gofiber/fiber/v2升级到破坏性更新的次版本(比如 v2.50.0 → v2.51.0 含中间件行为变更) - 必须显式带
/v2后缀,否则 Go 模块解析器可能误判为 v0/v1,引发 import 冲突 - 不要手动改
go.mod里的版本号,go get已自动锁定最新 patch 版(如 v2.50.2)
第一行代码必须用 fiber.New()
别抄示例里用 fiber.Default() 启动——它默认加载 logger、recover、requestid 三个中间件,上线后每秒几百请求就会把磁盘 I/O 打满,TTFB 增加 0.3–0.8ms,Authorization 头还可能被明文记入日志。
- 正确起点:
app := fiber.New(),得到一个干净实例 - 开发调试时可临时用
fiber.Default()验证路由逻辑,但上线前必须替换,并手动加中间件 - 如需错误恢复,用
recover.New(recover.Config{EnableStackTrace: false})关掉堆栈(生产环境不需要) - 如需日志,优先用
zerolog或log.Printf输出到 stderr,由 systemd 或容器平台统一收集
最容易被忽略的是:StrictRouting 默认开启,注册了 /users 就访问不了 /users/,这不是安装问题,是路由匹配规则——得靠重定向中间件或显式注册双路径来解,不能靠关配置。











