【问题标题】:How can make my GoLand to detect dependency packages under $GOPATH/pkg/mod?如何让我的 GoLand 检测 $GOPATH/pkg/mod 下的依赖包?
【发布时间】:2020-05-14 15:24:44
【问题描述】:

我正在尝试通过 kubebuilder 教程,刚刚将现有项目导入到 GoLand。

为我解决 kubebuilder 自动生成的脚手架代码,以及使用 go mod 自动下载的 pkgs。我在使用命令行环境时没有遇到任何问题,但事实证明,在使用 GoLand 打开项目后,IDE 无法解析导入的包名称,这意味着它无法检测或链接 go mod 安装的包。

我从 IDE 首选项中启用了 go mod(with vendoring) 和 dep,正确设置了 GOPATH 和 Go 运行时,但错误一直出现。

我不知道为什么会出现这个错误,以及如何解决它。

+) 工作目录是$GOPATH/src/example,所有的逻辑和设置都放在这个目录下。安装的依赖项放在 $GOPATH/pkg/mod 下。

【问题讨论】:

  • "set GOPATH and GOROOT" 至少设置 GOROOT 是错误的。可能您应该决定是否使用模块构建、GOPATH 构建(或 dep,不,您不应该)。
  • @Volker 您提供的答案不正确。您必须在 GoLand 中设置 Go 安装的路径,即所谓的 GOROOT,它才能使用 Go。这是此处描述的设置的一部分:jetbrains.com/help/go/quick-start-guide-goland.html
  • Volker 谈到了GOPATHGOROOT 环境变量。你讲的IDE设置叫同。但它们不是一回事(但可能服务于相同的目的)。
  • 我认为我的描述不恰当。我说的是 IDE 运行时选择为 GOROOT。那应该不是问题。我会更新这个问题。抱歉误导。

标签: go goland


【解决方案1】:

我从 IDE 首选项中启用了 go mod(with vendoring) 和 dep,正确设置了 GOPATH 和 GOROOT,但错误一直出现。

假设您的机器上有以下设置:

  • Go 安装在/usr/lib/go
  • GOPATH 设置为/home/florin/go
  • 名为demobuilder 的KubeBuilder 项目是在/home/florin/projects/demobuilder 下创建的。对于 Go Modules 项目,我建议这样做,而不是像您一样使用 GOPATH,因为它们在 GOPATH 中的行为方式不同。

首先,确保您拥有 GoLand 2019.3.1 或更高版本。

然后,创建demobuilder 项目后,启动GoLand,然后点击Open Project 按钮。

当项目打开时,如果你还没有配置,IDE 会询问你 Go SDK 的配置,也就是 GOROOT。它将是编辑器顶部的黄色条。单击右侧的链接进行配置。您可以选择本地安装并将其指向/usr/local/go。如果您没有安装 Go,也可以将其下载到您选择的目录中。

然后,IDE 应该会自动注意到该项目是基于 Go Modules 的项目并启用对它们的支持。如果不是,请转到Settings/Preferences | Go | Go Modules 并启用它。 不要同时启用 Go Modules 和 dep 支持。如果您这样做了,请禁用 dep 集成并重试。

你可以在the help page看到所有这些。

【讨论】:

  • 同时启用 dep 和 go mod 是个问题。从来没想过。非常感谢您的回答。
猜你喜欢
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多