5 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
這個(gè)網(wǎng)站上的答案對(duì)我有用?;旧?,通過以下方式在 GoLand 中啟用 go 模塊:
確保在設(shè)置中啟用了 Go Modules 集成(Preferences / Settings | Go | Go Modules),并且禁用了 GOPATH 索引(Preferences / Settings | Go | GOPATH | Index entire GOPATH)。
我一這樣做,紅色進(jìn)口就消失了,一切正常。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
GoLand 支持
最新版本的 GoLand 實(shí)現(xiàn)了對(duì) vgo 和 go 模塊的支持,但還沒有趕上 go1.11rc1 的語法變化。以防萬一它在過渡期間對(duì)某人有所幫助,我將記錄我嘗試過的事情以及他們的問題和成功。
TL;DR:不要將您的項(xiàng)目放入其中$GOPATH
并將新項(xiàng)目創(chuàng)建為“Go Module (vgo)”類型,或者為現(xiàn)有項(xiàng)目打開該設(shè)置。
將 go1.11rc1 安裝為 global 后go
,GoLand 中的項(xiàng)目有三個(gè)基本用例go mod
......
在里面 創(chuàng)建一個(gè)新項(xiàng)目$GOPATH
:
創(chuàng)建一個(gè)類型為“Go Module (vgo)”的新項(xiàng)目:File -> New,選擇“Go Module (vgo)”
將您的項(xiàng)目目錄設(shè)置為內(nèi)部的內(nèi)容
$GOPATH
:$GOPATH/src/github.com/stevetarver/insidegopath
創(chuàng)建您的
main.go
文件,引用您的$GOPATH
.將該包添加到您的導(dǎo)入中。
使用此處gif 中所述的go get
GoLand 方式:vgo
點(diǎn)擊導(dǎo)入包。
單擊紅色檢查燈泡。
單擊“同步包...”。
失敗:
go: go mod -sync is now go mod tidy
使用go get
GoLand嵌入式終端方式:
打開嵌入式終端。
go get
你的進(jìn)口。失敗:
? go get github.com/urfave/cli go get: warning: modules disabled by GO111MODULE=auto in GOPATH/src; ignoring go.mod; see 'go help modules'
讓我們打開該變量并重試:
注意:終端插件首選項(xiàng)無法設(shè)置環(huán)境變量。
設(shè)置
GO111MODULE=on
:打開 Preferences -> Appearance & Behavior -> Path Variables,添加GO111MODULE=on
.退出終端,重試,重啟GoLand,重試,同上失敗。
env | grep GO111MODULE
在終端中什么也不產(chǎn)生。注意:如果這行得通,那將是一個(gè)糟糕的解決方案——GoLand 似乎沒有為此設(shè)置每個(gè)項(xiàng)目——該變量會(huì)為所有項(xiàng)目打開,這會(huì)破壞那些尚未準(zhǔn)備好的項(xiàng)目去模塊。
根據(jù)這個(gè)答案,您可以創(chuàng)建一個(gè)自定義命令行啟動(dòng)器以包含此環(huán)境變量,但是 eeuuwww - 您將如何跟蹤何時(shí)正常啟動(dòng) GoLand 以及何時(shí)使用命令行啟動(dòng)器?
您可以GO111MODULE=on
在 shell 初始化腳本中進(jìn)行設(shè)置,但這會(huì)破壞所有尚未使用 go 模塊的項(xiàng)目。
您還可以在每個(gè) go 命令前加上 env var:export GO111MODULE=on; go get github.com/urfave/cli
或在您的項(xiàng)目目錄中創(chuàng)建一個(gè)go
shell 腳本包裝器來為您執(zhí)行此操作。
這些都不是真正可行的解決方案,但 go 模塊的一部分要點(diǎn)是逃離可怕的 go 工作區(qū),所以繼續(xù)閱讀,它會(huì)變得更好
在外部 創(chuàng)建一個(gè)新項(xiàng)目$GOPATH
:
創(chuàng)建一個(gè)類型為“Go Module (vgo)”的新項(xiàng)目:File -> New,選擇“Go Module (vgo)”
將您的項(xiàng)目目錄設(shè)置為外部目錄
$GOPATH
修復(fù)你的
go.mod
:生成的文件包含module "outsidegopath"
,但我們想要類似的東西module github.com/stevetarver/outsidegopath
。這有點(diǎn)靠不住——GoLand 將嘗試重寫go.mod
和刪除部分路徑。重復(fù)幾次,它將停止嘗試。創(chuàng)建您的
main.go
文件。如果您通過 ide 創(chuàng)建它作為一個(gè) go 文件,它將包含package outsidegopath
. 修復(fù)它是package main
。現(xiàn)在您可以了
go get github.com/urfave/cli
,它已按$GOPATH/pkg/mod
預(yù)期提取。
添加對(duì)現(xiàn)有新go mod
項(xiàng)目的支持:
結(jié)果證明這非常簡(jiǎn)單——在 GoLand 中使用 go 模塊的最佳方式:
打開首選項(xiàng):Go -> Go Module (vgo),勾選“Enable Go Modules (vgo) integration”
如上所述工作 - 但您可以
go.mod
使用go mod init module-name
.

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
Go 1.13(2019 年 8 月)的模塊管理應(yīng)該更容易:
環(huán)境
GO111MODULE
變量繼續(xù)默認(rèn)為auto
,但現(xiàn)在只要當(dāng)前工作目錄包含文件或在包含文件的目錄下,該auto
設(shè)置就會(huì)激活命令的模塊感知模式——即使當(dāng)前目錄在.go
go.mod
GOPATH/src
此更改簡(jiǎn)化了內(nèi)部現(xiàn)有代碼的遷移
GOPATH/src
以及模塊感知包與非模塊感知導(dǎo)入器的持續(xù)維護(hù)。
$GOPATH
這意味著將不再需要所有“不要將項(xiàng)目放入其中”部分。
只要有一個(gè)go.mod
文件,模塊就會(huì)被識(shí)別,從命令行或像 Goland 這樣的 IDE。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
我嘗試了下面的方法,它解決了問題。Main Menu > File (Menu) > Invalidate Caches .... 選中 Invalidate 和 Restart 的所有復(fù)選框。重啟后讓它同步,問題應(yīng)該解決了。
- 5 回答
- 0 關(guān)注
- 310 瀏覽
添加回答
舉報(bào)