依赖包报错 module declares its path as...
module declares its path as:
but was required as:
今天将一部分共用的代码提取出来, 放在 github 以单独项目进行管理. 从另一个库进行依赖的时候, 执行 go mod tidy 加载依赖, 报错如上.
看了一下其他人的包, go.mod 文件内, module 的值应该与 github 路径一致, 与引用的地方的写法一致.
例如 https://github.com/gorilla/websocket 包, 里面 go.mod 中 module 的定义应该是 module github.com/gorilla/websocket, 在引用该包的时候, 应该使用 import "github.com/gorilla/websocket". 这三个地方应该是一致的. 如果不一致, 就会出现上面的依赖报错, 意思是 import 引入的 github 地址, 下载下来的代码, 声明自己的名字和预期不一样.
更新被依赖包代码后, 使用 go mod tidy 无法拉取最新 version
环境变量:
export GO111MODULE=on
说明已经开启了 v1.11+ 版本的 module 管理方式.
在更新了被依赖包之后, 想要在引用的地方更新
直接使用 tidy 进行更新无效, 并没有更新代码.
删除 go.sum, 以及 go.mod 中对应的行后, 使用 tidy 进行更新无效
删除 $GOPATH/pkg/mod 文件夹的缓存, 使用 tidy 进行更新无效
后来找到, 在 ~/go/pkg/mod 下面, 仍然有一份缓存, 将其删除; 同时将 $GOPATH/pkg/mod 删除; 同时修改依赖 go.mod 相关记录; 三者同时进行, 即可获取到 github 刚刚的更新.
原文:
https://wumingxiaozu.com/2019/11/26/ComputerScience/Golang/Golang%20%E7%BC%96%E5%86%99%E4%BE%9D%E8%B5%96%E5%8C%85%E5%90%8E%E4%BD%BF%E7%94%A8%E6%8A%A5%E9%94%99,%20%E4%BB%A5%E5%8F%8A%E6%97%A0%E6%B3%95%E5%8D%B3%E4%BD%BF%E6%9B%B4%E6%96%B0%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E4%BE%9D%E8%B5%96/