Golang运行main.go失败的原因及解决方法

Golang运行main.go失败的原因及解决方法 大家好, 我需要修复一位已离职同事的代码,而我是Golang新手。 文档中写道: 要运行服务器,请遵循以下简单步骤:

go run main.go

但我遇到了一些错误:

➜  validate-message-atm git:(master) ✗ go run main.go
go: finding module for package github.com/grpc-ecosystem/go-grpc-middleware
go: finding module for package github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc
go: finding module for package github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing
go: finding module for package github.com/mbobakov/grpc-consul-resolver
go: finding module for package google.golang.org/grpc
go: finding module for package github.com/hashicorp/consul/api
go: finding module for package github.com/opentracing/opentracing-go
go: finding module for package github.com/go-sql-driver/mysql
go: finding module for package github.com/pkg/errors
go: finding module for package github.com/uber/jaeger-client-go
go: finding module for package google.golang.org/grpc/codes
go: finding module for package github.com/golang/protobuf/proto
go: finding module for package github.com/grpc-ecosystem/go-grpc-prometheus
go: finding module for package google.golang.org/protobuf/reflect/protoreflect
go: finding module for package github.com/uber/jaeger-client-go/config
go: finding module for package github.com/golang/protobuf/ptypes
go: finding module for package google.golang.org/protobuf/runtime/protoimpl
go: finding module for package github.com/prometheus/client_golang/prometheus/promhttp
go: finding module for package github.com/golang/protobuf/ptypes/timestamp
go: finding module for package google.golang.org/grpc/health/grpc_health_v1
go: finding module for package google.golang.org/grpc/status
go: finding module for package github.com/prometheus/client_golang/prometheus
../../pkg/database/card/mysql/connexion.go:8:2: module github.com/go-sql-driver/mysql: invalid character '<' looking for beginning of value
../../pkg/grpc/atm/code.pb.go:10:2: module github.com/golang/protobuf/proto: invalid character '<' looking for beginning of value
../../pkg/grpc/card/conversion.go:6:2: module github.com/golang/protobuf/ptypes: invalid character '<' looking for beginning of value
../../pkg/grpc/card/card.pb.go:11:2: module github.com/golang/protobuf/ptypes/timestamp: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/grpc.go:15:2: module github.com/grpc-ecosystem/go-grpc-middleware: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:14:2: module github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:13:2: module github.com/grpc-ecosystem/go-grpc-prometheus: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:15:2: module github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/consul/server.go:11:2: module github.com/hashicorp/consul/api: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/consul/client.go:4:2: module github.com/mbobakov/grpc-consul-resolver: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:16:2: module github.com/opentracing/opentracing-go: invalid character '<' looking for beginning of value
../../pkg/database/encryption/encrypted.go:9:2: module github.com/pkg/errors: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:14:2: module github.com/prometheus/client_golang/prometheus: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:15:2: module github.com/prometheus/client_golang/prometheus/promhttp: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:17:2: module github.com/uber/jaeger-client-go: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:18:2: module github.com/uber/jaeger-client-go/config: invalid character '<' looking for beginning of value
api/service.pb.go:15:2: module google.golang.org/grpc: invalid character '<' looking for beginning of value
api/service.pb.go:16:2: module google.golang.org/grpc/codes: invalid character '<' looking for beginning of value
../../pkg/autoconfig/env/consul/server.go:14:2: module google.golang.org/grpc/health/grpc_health_v1: invalid character '<' looking for beginning of value
api/service.pb.go:17:2: module google.golang.org/grpc/status: invalid character '<' looking for beginning of value
../../pkg/grpc/atm/code.pb.go:11:2: module google.golang.org/protobuf/reflect/protoreflect: invalid character '<' looking for beginning of value
../../pkg/grpc/atm/code.pb.go:12:2: module google.golang.org/protobuf/runtime/protoimpl: invalid character '<' looking for beginning of value

如果您需要更多细节,请随时问我。 如果您能帮助我,我将不胜感激,我现在卡住了。


更多关于Golang运行main.go失败的原因及解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang运行main.go失败的原因及解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个错误表明Go模块代理返回了无效的响应(包含HTML/XML而不是模块数据)。通常是因为网络问题或代理配置错误。

首先检查你的Go模块代理配置:

# 查看当前代理配置
go env GOPROXY
go env GOSUMDB

临时解决方案是使用直接连接或更换代理:

# 方法1: 使用直接连接(跳过代理)
GOPROXY=direct go run main.go

# 方法2: 使用官方代理
GOPROXY=https://proxy.golang.org,direct go run main.go

# 方法3: 使用国内代理(如果在中国)
GOPROXY=https://goproxy.cn,direct go run main.go

如果问题持续存在,可以清理模块缓存:

# 清理模块缓存
go clean -modcache

# 然后重新运行
GOPROXY=https://proxy.golang.org,direct go run main.go

对于长期解决方案,更新你的Go环境配置:

# 设置永久代理配置
go env -w GOPROXY=https://proxy.golang.org,direct
go env -w GOSUMDB=sum.golang.org

# 或者使用国内镜像
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.org

如果项目有go.mod文件,确保它包含正确的模块声明:

module your-module-name

go 1.16

require (
    github.com/go-sql-driver/mysql v1.6.0
    github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
    // 其他依赖...
)

然后运行go mod tidy来同步依赖:

go mod tidy
go run main.go
回到顶部