go env GOPROXY GOSUMDB GOFLAGS
go mod download -x github.com/pkg/errors
go mod verify
git diff go.sum

拉代码后编译报 `verifying module: checksum mismatch`,同事机器上同样的 commit 却能过,删掉 go.sum 重新生成之后又恢复正常,谁也说不清中间差的到底是哪一版。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,模块内容与 go.sum 里记录的哈希不一致,可能来自代理缓存了不同内容或者 tag 被替换过,直接删 go.sum 等于把校验关掉,看起来解决了,实际放弃了供应链校验。

「go.sum 校验失败」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:先确认校验数据库和模块代理分别指向哪里;用下载命令单独把这一个模块的内容校验一遍;确认来源可信之后,再更新并提交这个校验文件。

改完只确认一件事:校验命令输出全部通过,校验文件的差异只出现在预期的那一行。

作者 9823189