Go Modules
Go 推出的包管理工具,但是它不是 Go 一经推出就有,所以带来了不少的兼容问题。
踩坑记录
我们用了七牛的 API SDK,而我们第一次使用的时间比较早,采用的版本是 https://github.com/qiniu/api.v7/tree/v7.2.4
所以在项目中使用的 import 方式是:import "github.com/qiniu/api.v7/auth/qbox"
仓库一直采用的兼容模式,所以在长期开发的机器上并未发生什么问题,但是当我们有新同事,或者更换电脑的时候,下载仓库项目,再想执行的时候发生了错误。
|
|
这可咋整?
从这里理解到的是 github.com/qiniu/[email protected]
仓库代码上没有此 tag 了,但是为什么我本地却可以执行了,后面发现我电脑的 mod 目录下有此仓库代码。
所以想到的一个办法是将我这个文件拷贝到新电脑上,结果还是不行。
是因为你即便是把文件拷贝过去了,但是 go mod 会进行 sum 值校验,还是会从远端进行拉取,但是因为不存在,所以就报错了。
产生的原因
- 项目使用了比较旧的 API,导致依赖的包也比较旧。
- 依赖项目的兼容分支代码被服务商从 tag 中删掉了。
qiniu GO SDK v7.3.0 引入 go mod
https://github.com/qiniu/api.v7/tree/v7.3.0
qiniu tags
https://github.com/qiniu/x/tags?after=v1.8.0
v1.10.0 创建于 Mar 30 v1.10.2 创建于 May 2
从日期也能够看出,有一部分的 tag 是被重新创建过的。
解决办法
删除 qiniu go sdk 在 go.mod 中的相关内容,然后使用 go mod tidy
,重新整理。
可能这个过程会失败,因为 qiniu go sdk 升级,可能会有 API 不兼容的情况。这个时候就需要你进行相关的 API 兼容修改,以便通过正常的代码逻辑调用。
aofei 提供
go list -m -json -versions github.com/qiniu/x@latest
使用这个命令来查看有的版本。
茶歇驿站
一个可以让你停下来看一看,在茶歇之余给你帮助的小站,这里的内容主要是后端技术,个人管理,团队管理,以及其他个人杂想。