Golang 编写依赖包后使用报错, 以及无法即使更新最新版本依赖

依赖包报错 module declares its path as...

1
2
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

环境变量:

1
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 刚刚的更新.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.