//代码是私有库,通过oauth配置,git可以拉下代码。
//++++++++++++++++++历史问题:
引入文件:
im_client "gitlab.sludev.shop/golang/client/im_client"
go mod tidy报错:
go: x_dream_guild/services imports
gitlab.sludev.shop/golang/client/im_client: module gitlab.sludev.shop/golang/client/im_client: git ls-remote -q origin in /home/x/.cache/go-mod/cache/vcs/424c2f9446a5e0ba57bef19ac5af0e43119285e8f80ee29a741abc0228a0a6f2: exit status 128:
remote: The project you were looking for could not be found or you don't have permission to view it.
fatal: repository 'http://oauth2:x@gitlab.sludev.shop/golang/client.git/' not found
gitlab仓库:
gitlab.sludev.shop/golang/client/im_client.git
我明明是用的gitlab.sludev.shop/golang/client/im_client.git的代码,但报错确实gitlab.sludev.shop/golang/client.git,是不是go mod里需要设置引用子模块?
+++++++++++++++++++++++++++++++++++++修正如下:
修改后go mod代码:
require im_client v0.0.1
replace im_client => gitlab.sludev.shop/golang/client/im_client.git v0.0.1
代码引用:
不再引用 im_client "gitlab.sludev.shop/golang/client/im_client"
go clean -modcache
go mod tidy
卡住不动
排除了不是网络的原因,估计还是哪里不对,有能解决的么
golang添加子模块引用后go mod tidy卡住
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:真正的快乐,源于内心的满足和对生活的热爱。
.根据你的描述,这是一个典型的 Go 模块子模块引用问题。问题在于 Go modules 对子模块路径的处理方式。
问题分析
- 路径解析问题:Go modules 会将
gitlab.sludev.shop/golang/client/im_client解析为仓库根路径gitlab.sludev.shop/golang/client.git - replace 指令问题:你的 replace 指令格式不正确
解决方案
方案1:使用正确的 replace 语法
module your-module-name go 1.19 require ( im_client v0.0.0 ) replace im_client => gitlab.sludev.shop/golang/client/im_client.git v0.0.0方案2:直接使用完整路径(推荐)
module your-module-name go 1.19 require ( gitlab.sludev.shop/golang/client/im_client v0.0.0 )然后在代码中直接导入:
import "gitlab.sludev.shop/golang/client/im_client"方案3:如果确实是子模块,配置 git
在私有仓库情况下,需要配置 git 来正确处理子模块:
# 配置 git 使用 ssh 而不是 http git config --global url."git@gitlab.sludev.shop:".insteadOf "https://gitlab.sludev.shop/" # 或者配置认证 git config --global http.extraheader "PRIVATE-TOKEN: your-token"方案4:检查网络和认证配置
确保你的 git 配置正确:
# 检查 git 配置 git config --list | grep gitlab # 测试能否克隆仓库 git clone https://gitlab.sludev.shop/golang/client/im_client.git方案5:强制刷新并设置超时
# 清理缓存 go clean -modcache # 设置超时和详细输出 GOPROXY=direct GOSUMDB=off go mod tidy -v # 或者使用 timeout 命令(Linux/Mac) timeout 30s go mod tidy诊断步骤
- 检查当前模块配置:
go mod edit -json- 查看详细错误信息:
GOPROXY=direct GOSUMDB=off go mod tidy -v- 检查 git 认证:
git ls-remote https://gitlab.sludev.shop/golang/client/im_client.git最终建议
最可能的问题是 replace 指令的格式问题。建议:
- 使用方案2的直接路径引用
- 确保你的 git 认证配置正确
- 如果仍然卡住,检查网络代理或防火墙设置
如果问题持续,可以提供
go mod tidy -v的详细输出,这样可以更准确地定位问题所在。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 路径解析问题:Go modules 会将