You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将私有Go模块github.com/XXX/lib下载至serviceA/serviceB的问题

解决Go私有仓库模块拉取失败(Repository not found)

问题场景

后端目录结构:

/backend
  /lib
   go.mod

  /serviceA
   go.mod

  /serviceB
   go.mod

  go.work
  go.work.sum

尝试将github.com/XXX/lib拉取到serviceA或serviceB时,触发以下错误:

go: module github.com/XXX/lib: git ls-remote -q origin in /Users/XXX/go/pkg/mod/cache/vcs/3d48bbee58603e5a60795e264deda7fec8cd31854e689825028f9ab9f9bbabc2: exit status 128:
    ERROR: Repository not found.
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

已完成的配置:

  1. 在.gitconfig中添加:
[url "ssh://git@github.com/"]
    insteadOf = https://github.com/
  1. 设置Go私有模块环境变量:
go env -w GOPRIVATE="github.com/XXX/*"

排查与解决步骤

1. 验证SSH密钥有效性

  • 执行ssh -T git@github.com,若返回Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.说明密钥权限正常;否则重新生成SSH密钥并添加到GitHub账号。
  • 确保密钥文件权限合规:执行chmod 600 ~/.ssh/id_rsa(ed25519密钥对应id_ed25519),避免权限过宽被SSH服务拒绝。

2. 确认GOPRIVATE配置生效

  • 执行go env GOPRIVATE,检查输出是否包含github.com/XXX/*。
  • 若未生效,排查是否有环境变量文件(如~/.bashrc、~/.zshrc)覆盖了该配置。可临时在终端执行export GOPRIVATE=github.com/XXX/*,再尝试拉取模块。

3. 核对模块路径与仓库信息

  • 确认github.com/XXX/lib的路径完全匹配仓库实际地址,注意GitHub路径区分大小写。
  • 检查serviceA/serviceB的go.mod中引用的模块版本是否存在:
    • 若使用分支,需指定分支名:go get github.com/XXX/lib@main
    • 若使用tag,确保tag已推送到远程:go get github.com/XXX/lib@v1.0.0
    • 若使用commit,替换为实际哈希值:go get github.com/XXX/lib@abcdef123456

4. 清理Go模块缓存

执行go clean -modcache清除本地模块缓存,之后重新执行拉取命令,避免缓存的错误状态干扰。

5. 排查go.work的影响

  • 查看go.work文件,若包含use ./lib声明,Go会优先使用本地lib模块,无需拉取远程版本。若需拉取远程版本,可临时注释该声明,完成后再恢复。
  • 也可直接进入serviceA/serviceB目录单独执行go get,规避workspace的影响。

内容的提问来源于stack exchange,提问作者user2738145

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:15:05