无法从公共BitBucket仓库导入Go包问题求助
Go自研客户端库导入失败问题
环境信息
目录结构
golang/ ├── gms │ ├── go.mod │ └── src │ ├── cmd │ │ └── gms │ │ └── main.go │ └── pkg │ ├── globals │ │ ├── globals.go │ │ └── logger.go │ ├── httpclient │ │ ├── client.go │ │ └── struct.go │ └── point │ ├── point.go │ └── struct.go └── README.md
go.mod内容
module bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/gms go 1.21.3
代码仓库地址
https://bitbucket.company.com/bbdc/users/rishavkumarj/repos/gms-client-library/browse
执行导入命令时的错误
rishavkumarj@go:~/fork/rishavkumarj/gms-client-library/golang/gms$ go get bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/gms go: bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/gms: module bitbucket.company.com/users/rishavkumarj/gms-client-library/golang: reading https://artifactory.company.com/artifactory/api/go/zextgolangproxy-go-rel-virtual/bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/@v/list: 404 rishavkumarj@go:~/fork/rishavkumarj/gms-client-library/golang/gms$ GOPROXY="" go get bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/gms go: bitbucket.company.com/users/rishavkumarj/gms-client-library/golang/gms: unrecognized import path "bitbucket.company.com/users/rishavkumarj/gms-client-library/golang": parse https://bitbucket.company.com/users/rishavkumarj/gms-client-library/golang?go-get=1: no go-import meta tags (meta tag bitbucket.company.com/bbdc/users/rishavkumarj did not match import path bitbucket.company.com/users/rishavkumarj/gms-client-library/golang)
问题原因
- Module路径与仓库实际路径不匹配:go.mod中声明的module路径缺少
bbdc前缀,而实际仓库路径是bitbucket.company.com/bbdc/users/rishavkumarj/repos/gms-client-library,导致Go解析导入路径时无法匹配到仓库的go-import元标签。 - 内部代理无对应模块:公司的Artifactory代理中尚未发布该模块,因此
go get请求返回404。
解决方法
1. 修正go.mod的Module路径
将go.mod中的module行改为与仓库路径一致:
module bitbucket.company.com/bbdc/users/rishavkumarj/gms-client-library/golang/gms go 1.21.3
2. 本地开发临时导入方案
如果只是本地调试,不想依赖内部代理,可以在需要导入该库的项目的go.mod中添加replace指令,直接指向本地代码路径:
replace bitbucket.company.com/bbdc/users/rishavkumarj/gms-client-library/golang/gms => /本地代码路径/golang/gms
添加后执行go mod tidy即可正常导入使用。
3. 发布到内部代理(团队共享场景)
给Bitbucket仓库打版本标签后,按照公司内部流程将模块发布到Artifactory的Go代理库中,确保代理能获取到该模块的版本列表。
内容的提问来源于stack exchange,提问作者SRM KTR
相关产品推荐
相关产品推荐

