5 回答

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

TA貢獻1864條經驗 獲得超2個贊
GoLand 支持
最新版本的 GoLand 實現了對 vgo 和 go 模塊的支持,但還沒有趕上 go1.11rc1 的語法變化。以防萬一它在過渡期間對某人有所幫助,我將記錄我嘗試過的事情以及他們的問題和成功。
TL;DR:不要將您的項目放入其中$GOPATH
并將新項目創建為“Go Module (vgo)”類型,或者為現有項目打開該設置。
將 go1.11rc1 安裝為 global 后go
,GoLand 中的項目有三個基本用例go mod
......
在里面 創建一個新項目$GOPATH
:
創建一個類型為“Go Module (vgo)”的新項目:File -> New,選擇“Go Module (vgo)”
將您的項目目錄設置為內部的內容
$GOPATH
:$GOPATH/src/github.com/stevetarver/insidegopath
創建您的
main.go
文件,引用您的$GOPATH
.將該包添加到您的導入中。
使用此處gif 中所述的go get
GoLand 方式:vgo
點擊導入包。
單擊紅色檢查燈泡。
單擊“同步包...”。
失敗:
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 -> Appearance & Behavior -> Path Variables,添加GO111MODULE=on
.退出終端,重試,重啟GoLand,重試,同上失敗。
env | grep GO111MODULE
在終端中什么也不產生。注意:如果這行得通,那將是一個糟糕的解決方案——GoLand 似乎沒有為此設置每個項目——該變量會為所有項目打開,這會破壞那些尚未準備好的項目去模塊。
根據這個答案,您可以創建一個自定義命令行啟動器以包含此環境變量,但是 eeuuwww - 您將如何跟蹤何時正常啟動 GoLand 以及何時使用命令行啟動器?
您可以GO111MODULE=on
在 shell 初始化腳本中進行設置,但這會破壞所有尚未使用 go 模塊的項目。
您還可以在每個 go 命令前加上 env var:export GO111MODULE=on; go get github.com/urfave/cli
或在您的項目目錄中創建一個go
shell 腳本包裝器來為您執行此操作。
這些都不是真正可行的解決方案,但 go 模塊的一部分要點是逃離可怕的 go 工作區,所以繼續閱讀,它會變得更好
在外部 創建一個新項目$GOPATH
:
創建一個類型為“Go Module (vgo)”的新項目:File -> New,選擇“Go Module (vgo)”
將您的項目目錄設置為外部目錄
$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 -> Go Module (vgo),勾選“Enable Go Modules (vgo) integration”
如上所述工作 - 但您可以
go.mod
使用go mod init module-name
.

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

TA貢獻1852條經驗 獲得超1個贊
我嘗試了下面的方法,它解決了問題。Main Menu > File (Menu) > Invalidate Caches .... 選中 Invalidate 和 Restart 的所有復選框。重啟后讓它同步,問題應該解決了。
- 5 回答
- 0 關注
- 284 瀏覽
添加回答
舉報