我带着go1.11rc1旋转,我注意到的第一件事是goland不承认进口。
goland版本公告说:“支持开箱即用的Go模块(以前称为vgo)。”
有人知道怎么解决这个问题吗?
问题:
复制步骤:
mkdir pjg && cd pjggo.mod文件:go mod init github.com/stevetarver/pjggo get github.com/urfave/cligo.mod文件现在看起来如下:
module github.com/stevetarver/pjg/v1
require github.com/urfave/cli v1.20.0 // indirect创建main.go
package main
import (
"fmt"
"log"
"os"
"github.com/urfave/cli"
)
func main() {
app := cli.NewApp()
app.Name = "boom"
app.Usage = "make an explosive entrance"
app.Action = func(c *cli.Context) error {
fmt.Println("boom! I say!")
return nil
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}在goland中查看main.go,并悬停在红色文本上查看问题。
$GOPATH/pkg/mod/中备注:
$GOPATH设置正确- go get将包放在正确的位置,GOPATH在env中与goland首选项匹配。/Users/starver/code/go/pkg/mod没有修复此问题。发布于 2020-11-24 23:00:43
本站上的答案对我来说是有效的。基本上,通过以下方式在GoLand中启用go模块:
确保在设置中启用了Go模块集成(Preferences / settings、Go、Go、Go模块),并且禁用了GOPATH索引(Preferences / Settings,整个GOPATH)。
我一做完这件事,红色进口就消失了,一切正常。
发布于 2018-08-18 17:02:40
GoLand支持
GoLand的最新版本实现了对vgo和go模块的支持,但它还没有赶上go1.11rc1语法的变化。为了防止它在过渡期间帮助到某人,我将记录我尝试过的事情,以及他们的问题和成功。
TL;DR:不要将项目放在$GOPATH中,以"Go模块(vgo)“类型创建新项目,或者为现有项目打开该设置。
将go1.11rc1作为全局go安装,GoLand中的go mod项目有三个基本用例.
在 $GOPATH中创建一个新项目
$GOPATH中的某个内容:$GOPATH/src/github.com/stevetarver/insidegopathmain.go文件,引用$GOPATH中不存在的包。使用go get,GoLand通过vgo的方式,如gif 这里中所述:
go: go mod -sync is now go mod tidy使用go get的GoLand嵌入式终端方式:
go get你的进口。ᐅ go get github.com/urfave/cli go get: warning: modules disabled by GO111MODULE=auto in GOPATH/src; ignoring go.mod; see 'go help modules'让我们打开这个变量,然后再试一次:
GO111MODULE=on:打开Preferences ->外观&行为->路径变量,并添加GO111MODULE=on。env | grep GO111MODULE不会产生任何结果。您可以在shell init脚本中设置GO111MODULE=on,但这会破坏所有尚未使用go模块的项目。
您还可以在每个go命令前面加上env:export GO111MODULE=on; go get github.com/urfave/cli,或者在您的项目目录中为您创建一个go shell脚本包装器。
这些都不是真正可行的解决方案,但go模块的部分要点是逃离可怕的go工作区,因此继续读下去,它会变得更好。
在外部创建一个新项目 $GOPATH
$GOPATH之外的内容go.mod:生成的文件包含module "outsidegopath",但是我们需要类似于module github.com/stevetarver/outsidegopath的内容。这有点摇摇欲坠- GoLand将尝试重写go.mod并删除部分路径。重复几次,就会停止尝试。main.go文件。如果通过ide作为go文件创建这个文件,它将包含package outsidegopath。把它修正为package main。go get github.com/urfave/cli,并按预期的方式将其取到$GOPATH/pkg/mod中。将go mod支持添加到(现有的新项目)中:
这实际上是非常简单的--在GoLand中使用go模块的最佳方式:
go.mod创建了自己的go mod init module-name。发布于 2019-07-23 16:09:04
使用Go 1.13 (2019年8月),模块管理应该更容易:
GO111MODULE环境变量继续默认为auto,但只要当前工作目录包含或位于包含go.mod文件的目录下,auto设置现在就激活go命令的模块感知模式-,即使当前目录位于中。 此更改简化了GOPATH/src中现有代码的迁移,以及与非模块感知进口商一起对模块感知包进行持续维护的过程。
这意味着不再需要“不要将项目放入$GOPATH”部分。
只要有一个go.mod文件,就可以从命令行或者来自像戈兰这样的IDE识别模块.
https://stackoverflow.com/questions/51910862
复制相似问题