Go模块编译问题及解决方法
对如下编译错误:
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中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义