当我将Go中的protobuf和grpc-ecosystem升级到最新版本后,出现了错误的问题,以下是一种解决方法
简述
我将总结一下有关标题所提到问题的处理方法、降级库的方法。
这个错误是在2018/12/10时发生的,可能会很快修复,但如果近期发生了相同的错误,或者希望参考库的下载方法的话,我会留下这篇文章。如果你想立即修复错误,请确保检查所有执行命令。
経緯 – 经过、事情的来龙去脉
如果按照以下方式更新proto系列的库,
brew upgrade protobuf
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u go.pedge.io/protoeasy/cmd/protoeasy
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
出现以下错误消息后,之前一直可行的构建无法通过。
xxxxx.pb.go:xx:xx: undefined: proto.ProtoPackageIsVersion3
xxxxx.pb.gw.go:xx:xx: undefined: utilities.IOReaderFactory
因为有其他人遇到了相同的错误,所以我将尝试相似的解决办法。
proto-gen-go的Rev更改为ProtoPackageIsVersion3导致了故障
https://github.com/golang/protobuf/issues/763
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go
git checkout v1.2.0
go install
git checkout master
再次进行make proto和make操作之后,proto.ProtoPackageIsVersion3的错误消失了,但是utilities.IOReaderFactory的错误仍然存在。
由于这是pb.gw.go的网关文件,因此网关部分也需要进行降级。
cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
git checkout v1.5.1
go install
git checkout master
使用这个命令执行make proto并进行make操作后,不再出现错误。
降低版本的方法 de
只需进入目标文件夹,检出旧版本并安装,但如果不将分支切换回master,在再次运行go get -u时会发生错误,因此需要切换回去。
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go
git checkout v1.2.0
go install
git checkout master
所有的执行命令
brew upgrade protobuf
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u go.pedge.io/protoeasy/cmd/protoeasy
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go
git checkout v1.2.0
go install
git checkout master
cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
git checkout v1.5.1
go install
git checkout master