如何让我的GoLand检测$GOPATH/pkg/mod下的依赖包?

Jun*_*eon 3 go goland

我正在尝试 kubebuilder 教程,并将现有项目导入 GoLand。

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

我从 IDE 首选项中启用了 go mod(带有供应商)和 dep,正确设置了 GOPATH 和 Go 运行时,但错误仍然出现。

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

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

dls*_*per 6

我从 IDE 首选项中启用了 go mod(带有供应商)和 dep,并正确设置了 GOPATH 和 GOROOT,但错误仍然出现。

假设您的计算机上有以下设置:

  • Go 安装在/usr/lib/go
  • GOPATH 设置为/home/florin/go
  • 名为 KubeBuilder 的项目demobuilder在 下创建/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 模块和dep支持。如果您这样做了,请禁用 dep 集成并重试。

您可以在帮助页面中看到所有这些内容。