有时候,发布 go 库会发现在其他项目中无法引用,产生 410 Gone 错误。
这是由于你的 go 库声明为 go 1.12 格式,此时将没有 SUMDB 校验信息,因而在一个 go 1.13 的项目中引用这样的旧的库格式时会产生校验错误,进而报错为 410 Gone。
例如:
解决的办法有很多。
对于使用该旧格式库的人来说,以下两个办法都能帮助你顺利下载库和完成引用:
export GONOSUMDB="github.com/hedzr/errors,$GONOSUMDB"
# Or
export GOSUMDB=off
对于该库的拥有者而言,下面的办法是正确的处理方案,可以一劳永逸地解决问题:在 go.mod 中修改库宣告的版本格式为 1.13。例如:
module github.com/hedzr/errors
go 1.13 // go 1.12
对于库作者而言,如果还有任何发布的库的 go.mod 中包含 go 1.12 宣告的,都应该立即更新库为新版本本修正这个宣告为 go 1.13,以避免他人遇到麻烦。