Go模块无法识别GOPATH下的文件

时间:2019-04-12 11:17:45

标签: go intellij-idea go-modules

我试图在intellij中设置GO模块,并试图在GOPATH下导入软件包。当我使用Go Modules时,似乎没有从GOPATH中“导入”软件包。关于我可能做错了什么的任何想法?

以下是屏幕截图。左图:GoModules,无法识别包。右图:简单的GO项目,可以识别软件包。

我尝试做同步包,没有运气。

Go版本-1.12.3

Initellij_GO_MOD

2 个答案:

答案 0 :(得分:3)

两个受支持的模式(“ GOPATH模式”和“模块感知模式”)是互斥模式。这意味着您不能同时拥有模块和GOPATH。

引用Command go: GOPATH and Modules:

  

使用模块时,GOPATH不再用于解析导入。但是,它仍用于存储下载的源代码(在GOPATH / pkg / mod中)和已编译的命令(在GOPATH / bin中) )。

还有Command go: Preliminary module support:

  

要获得更细粒度的控制,Go 1.11中的模块支持应考虑一个临时环境变量GO111MODULE,可以将其设置为三个字符串值之一:off,on或auto(默认值)。如果GO111MODULE = off,那么go命令将永远不使用新的模块支持。相反,它在供应商目录和GOPATH中查找依赖关系。我们现在将此称为“ GOPATH模式”。如果GO111MODULE = on,则go命令需要使用模块,从不咨询GOPATH。我们称此命令为模块感知或以“模块感知模式”运行。如果GO111MODULE = auto或未设置,则go命令根据当前目录启用或禁用模块支持。仅当当前目录位于GOPATH / src之外并且本身包含go.mod文件或位于包含go.mod文件的目录下时,模块支持才启用。

     

在模块感知模式下,GOPATH不再定义构建期间导入的含义,但仍会存储下载的依赖项(在GOPATH / pkg / mod中)和已安装的命令(在GOPATH / bin中) ,除非设置了GOBIN。

答案 1 :(得分:0)

我遇到了这个问题,我为每个项目使用了这个设置,它解决了我的问题。 enter image description here

但我仍在寻找全局 GO 模块配置。