簡介
由于眾所周知的原因,在下載一些庫的時候會下載不了,比如 golang.org/x/... 相關的庫。為此,網上出現了很多解決方案。
從 Go1.11 開始,Go 引入了 module,對包進行管理,通過 go mod 命令來進行相關操作。這里,我們基于 Go 目前最新版本 Go1.12,通過 module 來搭建 Goland 開發環境。
創建Project
打開 Goland,創建 project,左側選擇 Go Modules(vgo),在 Proxy 中輸入:https://athens.azurefd.net (這是下載墻外包的關鍵),如果不行,試試輸入 https://goproxy.io
編寫測試代碼
我們來試驗通過 Colly 抓取數據
我們通過 Goland 創建一個 main.go 文件,粘貼上如下代碼:
package mainimport ("fmt""github.com/gocolly/colly"
)func main() {c := colly.NewCollector()// Find and visit all linksc.OnHTML("a[href]", func(e *colly.HTMLElement) {e.Request.Visit(e.Attr("href"))})c.OnRequest(func(r *colly.Request) {fmt.Println("Visiting", r.URL)})c.Visit("http://go-colly.org/")
}
這時候 Goland 并不能識別 github.com/gocolly/colly 這個包。我們執行:Run -> Run 'go build main.go',一段時間后,在我們項目下會生成 go.sum 文件,打開該文件,會發現把依賴都下載下來了。因為 colly 包依賴 golang.org/x/net 包,所以這個包也下載了。我們很方便的解決了“墻”的問題。
非 Goland 下的處理
對于非 Goland 下的情況,我們可以通過設置環境變量 GOPROXY 來達到下載“墻”外包的目的:
export GOPROXY=https://athens.azurefd.net
module 模式還是很好用的,建議大家都升級到最新版本,嘗試使用 module。