[轉] golang go mod 解決 io timeout


對如下編譯錯誤:

go build -o hello main.go

build command-line-arguments: cannot load google.golang.org/grpc: module google.golang.org/grpc: Get https://proxy.golang.org/google.golang.org/grpc/@v/list: dial tcp 172.217.24.17:443: i/o timeout

有兩個解決辦法:

1 代理方式

即在執行前先設置好環境變量“GOPROXY”和“GO111MODULE”:

export GO111MODULE=on

export GOPROXY=https://goproxy.io或者export GOPROXY=https://goproxy.cn

對於1.13及以上版本,可直接如下這樣:

go env -w GOPROXY=https://goproxy.cn,direct

推薦使用七牛雲的“goproxy.cn”,因為“goproxy.io”也不一定可用。

自動下載的包被放在用戶的主目錄(實為GOPATH目錄,可執行“go env|grep GOPATH”確認)下,完整路徑為:~/go/pkg/mod,如:

$ls -l ~/go/pkg/mod

total 0

drwxr-xr-x 4 guest staff 128 2 21 14:11 cache

drwxr-xr-x 3 guest staff 96 2 21 14:11 github.com

drwxr-xr-x 3 guest staff 96 2 21 14:11 golang.org

drwxr-xr-x 4 guest staff 128 2 21 14:11 google.golang.org

如遇到如下錯誤:

go: downloading google.golang.org/grpc v1.27.1

build command-line-arguments: cannot load google.golang.org/grpc: open /Users/guest/go/pkg/mod/cache/download/google.golang.org/grpc/@v/v1.27.1.lock: permission denied

請在執行時加上“sudo”,比如:

sudo go build -o hello hello.go

2 使用“go mod”的“replace”命令,將網絡路徑改成本地路徑,如:

$cat go.mod

module hello

go 1.13

require google.golang.org/grpc v1.27.1 // indirect

replace google.golang.org/grpc => /usr/local/go/src/google.golang.org/grpc

注意,replace中的需出現在require中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM