Go Module导入报错invalid version: go.mod has malformed module path
我多方查找"go.mod has malformed module path"错误的解决方案,始终没找到自行开发的Go库无法被导入的原因,为简化问题我创建了一个小型测试库仓库。
注:我参考了stripe官方Go SDK的结构进行开发。
问题描述
我自行开发了一个Go库,执行go mod init初始化后将代码和版本标签推送到代码托管平台,随后在其他项目中尝试导入该库时收到报错:go get: github.com/buphmin/test-go-pkg@v1.0.0: invalid version: go.mod has malformed module path "github.com/buphmin/test-go-pkg/v1" at revision v1.0.0。我之前不清楚问题出在哪里,也未找到对应的解决方案。
复现步骤
前提:已正确安装Go环境。
- 创建本地文件夹
- 执行
go mod init <your_mod>初始化本地项目 - 执行
go get github.com/buphmin/test-go-pkg/v1拉取依赖 - 触发上述报错
其他环境信息
- Go版本:v1.16
- 操作系统:ubuntu 18 LTS
go.mod文件内容
测试库的go.mod内容如下:
module github.com/buphmin/test-go-pkg/v1 go 1.16
问题原因及解决方案
这个错误的根因是违反了Go模块的语义化版本管理规则:
- 对于v1.x.x版本的Go模块,go.mod的module路径不需要额外加
/v1后缀 - 只有当模块大版本升级到v2及以上时,才需要在module路径末尾追加对应大版本标识(比如/v2、/v3)
你当前打了v1.0.0的版本标签,但是go.mod里写的模块路径带了/v1后缀,二者不匹配就会触发这个错误。修改方式很简单:把go.mod里的模块路径改为module github.com/buphmin/test-go-pkg,重新推送代码并打v1.0.0标签即可正常拉取使用。
内容的提问来源于stack exchange,提问作者buphmin
相关产品推荐
相关产品推荐

