背景
由于本机上micro版本较低,其实本机版本是0.13.0,然后用这个版本命令行调用远程rpc一直报:
|
|
故需要升级本机micro版本。
升级版本: 1.5.0
升级过程可谓一波三折,坑中有坑啊。以下内容可能会让你有砸电脑的冲动,请三思而后行。
下面简单介绍升级过程
|
|
以上步骤操作完成之后已在本地创建了micro的v1.6.0版本分支,下面我们会基于这个分支来编译micro。
由于本地项目中使用到了micro的第三方plugin,具体包含:
registry :etcdv3
transport :tcp
所以在编译micro的时候需要将这两个插件包含进来。
我们需要在源码目录中创建 plugins.go
文件用来引用这些plugin,文件目录为micro源码根目录,如下:
|
|
在源码目录中新增了一个 plugins.go
文件, 文件内容如下:
|
|
是的,你没看错,就是这么简单,只要将依赖的插件包引用进来即可,666………………..
好了,上面文件已经创建好了,此时我们可以尝试编译micro了,话不多说,行动起来吧
|
|
但是,现实总是残酷的,我们看到报了如下错误:
|
|
发现无法识别 github.com/nats-io/nats.go@v1.8.2-0.20190607221125-9f4d16fe7c2d
从github中查看github.com/nats-io/nats.go仓库,发现目前最新的release版本为v1.8.1,压根儿就没有v1.8.2版本。
然后开始从源码中查找哪里依赖了这个版本的仓库,发现 go-plugins@v1.1.1 依赖了。
尝试如何解决,首先查看micro源码中的go.mod文件中是否有依赖 go-plugins@v1.1.1, 内容如下:
|
|
发现并没有依赖,所以之前编译的时候使用了最新的版本。我们修改一下go-plugins版本:
|
|
再次编译……………………………..
哇呀呀呀呀呀呀…………………………….
又报错了/(ㄒoㄒ)/~
|
|
好在这个问题已经有人踩过坑了,参考链接:https://github.com/golang/lint/issues/446#issuecomment-483638233
这个只是lint的解决方案,testcontainers同理,修改之后的go.mod如下:
|
|
心想这回应该可以大功告成了吧,我们再来一遍。
🤮🤮🤮🤮🤮🤮🤮,”中毒身亡”
|
|
还有最后一口气,我们再坚持一下…
又是各种网上查找
最后功夫不负有心人,我们找到了问题的解决方案:https://github.com/hashicorp/consul/issues/6019#issuecomment-505782870
github真的是个很神奇的网站😝,再次修改go.mod:
|
|
好啦,我们在编译一下,终于大功告成了。