目录
大概就是:
说一下我的案例
下面开始引入主题:如果利用replace替换包
先解释下go mod 的 replace 关键字是怎么使用的
为什么需要 replace?
replace怎么用?
参数说明:
大概就是:
1、我遇到了 go get 不到包的情况
2、需要用 go.mod 的 replace 来解决因为go get 不了远程包,然后需要下载远程包,如果远程包有go.mod,那你就只能再通过 replact来引入远程包的问题。(重点,主题)
说一下我的案例我需要下载腾讯tpns的go sdk包
地址:https://cloud.tencent.com/document/product/548/58319 选择go就会进入下图页面
然后我尝试使用 go get 去下载
go get git.code.tencent.com/tpns/tpns-server-sdk/gosdk
结果报错,那我就去下载sdk包文件到我本地,我直接本地使用总可以了吧?
下载后的样子是这样的,一个文件gosdk,然后里面有各种文件。如下图:
然后我把它放在我项目中的pkg(一般包我都会放这里)
他也没有报错,也可以调用。
但是当我bee run 或者 go run 的时候,就提示报错了
报错的意思就是找不到这个下载下来的gosdk包
因为它里面有一个mod文件, 一般是不能mod包引入另一个mod包的,只能通过go.mod文件中replace来做引入
下面开始引入主题:如果利用replace替换包我看到我下载的远程包里面有个go.mod文件写着包名:git.code.tencent.com/tpns/tpns-server-sdk/gosdk
所以我首先去我的本地go mod 目录中,创建以下路径,然后把gosdk包移动进去,如下图:
先解释下go mod 的 replace 关键字是怎么使用的 为什么需要 replace?答案:手动添加go get 不出来的地址
replace怎么用?
1、需要下载你go get 的那个包到本地
2、再移动到全局go mod 的下载目录中,我的全局mod目录是/Users/twj/Documents/go_www/pkg/mod
3、然后再通过你项目中的go.mod使用replace参数来做引入。(如果你下载的远程包里面没有go.mod,那你可以直接移动到你项目目录中使用了,不需要replace,我后面的案例是因为我下载的远程包有go.mod)
参数说明:replace (require 中的地址,你可以随便写,但是要和require的一致] => [新地址,也就是你放在本地目录的包)
然后去我的项目的go.mod中
然后就可以使用了
另外你也可以把外部包放在你的项目内,这样你就要更改replace,
放项目内也有好处,就是你以后如果要迁移项目给别人,就可以项目+包一起带走了,不然你还要去看引用了什么包,再找到mod,不是很好
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)