Golang执行main.go报错:无效字符'<'导致解析失败

Golang执行main.go报错:无效字符’<'导致解析失败 大家好,

我需要修复一位已离职同事的代码,而我是Go语言的新手。 在README文件中写道:

➜  encryption-key-manager-api git:(master) ✗ go run main.go                  
go: finding module for package github.com/golang/protobuf/proto
go: finding module for package github.com/golang/protobuf/ptypes/timestamp
go: finding module for package github.com/grpc-ecosystem/go-grpc-middleware
go: finding module for package google.golang.org/protobuf/reflect/protoreflect
go: finding module for package github.com/golang/protobuf/ptypes
go: finding module for package github.com/go-sql-driver/mysql
go: finding module for package github.com/gorilla/mux
go: finding module for package github.com/rs/cors
go: finding module for package github.com/pkg/errors
go: finding module for package github.com/grpc-ecosystem/go-grpc-prometheus
go: finding module for package github.com/uber/jaeger-client-go
go: finding module for package github.com/prometheus/client_golang/prometheus/promhttp
go: finding module for package github.com/uber/jaeger-client-go/config
go: finding module for package github.com/mbobakov/grpc-consul-resolver
go: finding module for package google.golang.org/grpc/codes
go: finding module for package github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc
go: finding module for package github.com/opentracing/opentracing-go
go: finding module for package google.golang.org/grpc/status
go: finding module for package google.golang.org/grpc/health/grpc_health_v1
go: finding module for package google.golang.org/grpc
go: finding module for package github.com/hashicorp/consul/api
go: finding module for package google.golang.org/protobuf/runtime/protoimpl
go: finding module for package github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing
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 '&lt;' looking for beginning of value
../../pkg/grpc/key/key.pb.go:10:2: module github.com/golang/protobuf/proto: invalid character '&lt;' looking for beginning of value
../../pkg/grpc/key/conversion.go:8:2: module github.com/golang/protobuf/ptypes: invalid character '&lt;' looking for beginning of value
../../pkg/grpc/key/key.pb.go:11:2: module github.com/golang/protobuf/ptypes/timestamp: invalid character '&lt;' looking for beginning of value
go/routers.go:19:2: module github.com/gorilla/mux: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/grpc.go:15:2: module github.com/grpc-ecosystem/go-grpc-middleware: invalid character '&lt;' 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 '&lt;' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:13:2: module github.com/grpc-ecosystem/go-grpc-prometheus: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:15:2: module github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/consul/server.go:11:2: module github.com/hashicorp/consul/api: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/consul/client.go:4:2: module github.com/mbobakov/grpc-consul-resolver: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:16:2: module github.com/opentracing/opentracing-go: invalid character '&lt;' looking for beginning of value
../../pkg/database/encryption/encrypted.go:9:2: module github.com/pkg/errors: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:14:2: module github.com/prometheus/client_golang/prometheus: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/prometheus/grpc.go:15:2: module github.com/prometheus/client_golang/prometheus/promhttp: invalid character '&lt;' looking for beginning of value
main.go:24:2: module github.com/rs/cors: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:17:2: module github.com/uber/jaeger-client-go: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/jaeger/grpc.go:18:2: module github.com/uber/jaeger-client-go/config: invalid character '&lt;' looking for beginning of value
../encryption-key-manager/api/service.pb.go:16:2: module google.golang.org/grpc: invalid character '&lt;' looking for beginning of value
../encryption-key-manager/api/service.pb.go:17:2: module google.golang.org/grpc/codes: invalid character '&lt;' looking for beginning of value
../../pkg/autoconfig/env/consul/server.go:14:2: module google.golang.org/grpc/health/grpc_health_v1: invalid character '&lt;' looking for beginning of value
../encryption-key-manager/api/service.pb.go:18:2: module google.golang.org/grpc/status: invalid character '&lt;' looking for beginning of value
../../pkg/grpc/key/key.pb.go:12:2: module google.golang.org/protobuf/reflect/protoreflect: invalid character '&lt;' looking for beginning of value
../../pkg/grpc/key/key.pb.go:13:2: module google.golang.org/protobuf/runtime/protoimpl: invalid character '&lt;' looking for beginning of value

如果您需要更多信息,请随时询问。 如果您能尝试帮助我,我将不胜感激,我现在被卡住了。frowning


更多关于Golang执行main.go报错:无效字符'<'导致解析失败的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

你是否在防火墙后面,导致无法访问这些模块?

更多关于Golang执行main.go报错:无效字符'<'导致解析失败的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我猜你是在尝试解析响应,而当你从请求中未收到任何内容并试图解析一个 nil 结构体时,就会发生这种情况。

这个错误通常是由于Go模块代理返回了HTML页面而不是JSON响应导致的。最常见的原因是网络问题或代理配置问题,导致Go工具链无法正确获取模块信息。

以下是几种解决方案:

1. 检查网络连接和代理设置

# 检查是否能访问Go模块代理
curl -v https://proxy.golang.org/github.com/go-sql-driver/mysql/@v/list

# 如果使用私有代理,检查配置
go env GOPROXY
go env GOSUMDB

2. 清除Go模块缓存并重试

# 清除模块缓存
go clean -modcache

# 删除go.sum文件
rm go.sum

# 重新下载依赖
go mod download

3. 使用直接模式或更换代理

# 使用直接模式(跳过代理)
GOPROXY=direct go mod download

# 或使用国内代理(如果在中国)
GOPROXY=https://goproxy.cn,direct go mod download

# 或使用阿里云代理
GOPROXY=https://mirrors.aliyun.com/goproxy/,direct go mod download

4. 检查go.mod文件格式 确保go.mod文件没有语法错误:

# 验证go.mod文件
go mod verify

# 整理go.mod文件
go mod tidy

5. 完整重置步骤

# 删除所有缓存和锁定文件
rm -rf go.sum
go clean -modcache
go clean -cache

# 设置代理并重新获取依赖
export GOPROXY=https://goproxy.cn,direct
go mod download

# 尝试运行
go run main.go

6. 如果问题持续,检查网络防火墙或VPN设置 有些公司网络会拦截或修改HTTPS流量,导致Go模块下载失败。

这个错误不是代码语法问题,而是Go模块系统在下载依赖时遇到了格式错误的响应。通常通过清除缓存和调整代理设置可以解决。

回到顶部