VSCode Go 扩展加载具有私有存储库依赖项的工作区时出错

VSCode Go extension Error loading workspace with private repository dependency

一切正常,直到我添加了私有存储库的依赖项。我注意到自动完成功能停止工作并且 vscode:

发出错误通知
Error loading workspace: err: exit status 1: stderr: go:
bitbucket.org/my-group/my-private-repo@v0.0.0-20210512194559-2c29669c4ecc: 
reading https://api.bitbucket.org/2.0/repositories/my-group/my-private-repo?fields=scm: 
403 Forbidden server response: Access denied. You must have write or admin access. 
go: bitbucket.org/my-group/my-private-repo@v0.0.0-20210512194559-2c29669c4ecc: 
reading https://api.bitbucket.org/2.0/repositories/my-group/my-private-repo?fields=scm: 
403 Forbidden server response: Access denied. You must have write or admin access. 
: packages.Load error

似乎 go 扩展正在尝试访问我的私有存储库:

  1. 为什么代码竞赛需要这样做才能进行?
  2. 如果有必要,我如何向 go 扩展程序提供我的 SSH 密钥?
  3. 其他解决方法?
  1. 它会尝试获取您的依赖项的来源,以便为您生成实际的建议。它想要加载源代码 go module 样式,我猜你的依赖项位于 GOPATH 中。你会希望它能优雅地处理连接错误并仍然为它可以访问的代码提供完成,所以这可能是一个错误,考虑在 github(我不知道是哪个项目)上创建一个问题。
  2. 在这种情况下,通过执行以下修复,您也可以将 go mod 用于私有依赖项,而不必以“老式”方式手动管理依赖项。 Go modules 默认使用 Git,您可以通过将以下内容添加到全局 git 配置文件来指示 git 始终使用 SSH 而不是 HTTPS:
[url "git@bitbucket.org:"]
    insteadOf = https://bitbucket.org/

您的私钥应该会自动使用,假设您不需要任何特殊配置即可正常 git 通过 ssh 操作。

  1. Go modules 支持通过 vendor 目录包含依赖项。如果您将依赖项放在那里,代码完成应该使用它而不是尝试下载它。但我无法证实这一点,从未尝试过