症状
构建失败并报 inconsistent vendoring,指出某模块在 vendor 目录中缺失或多余。vendor 目录是依赖的快照,因此任何对 go.mod 或 go.sum 的改动若不重新生成它,就会让两者不同步。CI 常在未同步 vendor 的依赖更新后如此失败。
诊断
读取不一致的模块名;用 go mod tidy 加 go mod vendor 重新生成;或显式决定是否使用 vendoring。
go build ./... 2>&1 | head -20
根因
构建使用了 vendor 目录,而 go.mod 与 go.sum 描述的依赖集合不同,以致 vendored 源码与构建预期不符。
修复
依赖变更后运行 go mod vendor 使 vendor 与 go.mod 一致;若不打算 vendoring,则删除该目录并保持构建模式不强制 -mod=vendor。
验证
重新构建并跑测试确认不一致消失,并确认 vendored 依赖版本与 go.mod 一致。快照与模块文件一致即证明修复。
常见陷阱
手动编辑 vendor 目录会与下次生成冲突;应始终通过 go mod vendor 重生成。