ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-07-15

2021-07-15 12:00:03  阅读:457  来源: 互联网

标签:protoc 15 07 proto grpc golang 2021 go protobuf


Protobuf,protoc,proto-gen-grpc版本兼容问题+解决方法

编译命令

  • 参考文档
    • https://studygolang.com/articles/28132?fr=sidebar
protoc  --go_out=plugins=grpc:./ *.proto

issue1

172-1-1-156:proto $ protoc  --go_out=plugins=grpc:./ *.proto
--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC

protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    *.proto
  • protoc-gen-go版本问题
  • 解决方法
See https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code for more information.
172-1-1-156:proto $ GO111MODULE=on go get -u github.com/golang/protobuf/protoc-gen-go@v1.3.5
go get: downgraded github.com/golang/protobuf v1.5.0 => v1.3.5
go get: downgraded google.golang.org/protobuf v1.26.0 => v1.26.0-rc.1

issue2

# trading-system/grpc/etc/proto
grpc/etc/proto/etc.pb.go:30:11: undefined: "github.com/golang/protobuf/proto".ProtoPackageIsVersion4

  • 问题分析
    • 不是最新版本
  • 解决方法
//我只用了如下方法
go get -u google.golang.org/grpc
go install github.com/golang/protobuf/protoc-gen-go

// 以下方法来自http://www.manongjc.com/detail/11-wgczdfriohrkgjm.html
GIT_TAG="v1.2.0" # change as needed
go get -d -u github.com/golang/protobuf/protoc-gen-go
git -C "$(go env GOPATH)"/src/github.com/golang/protobuf checkout $GIT_TAG
go install github.com/golang/protobuf/protoc-gen-go

issue 3

*ApiGRPCServer does not implement "trading-system/grpc/api/proto".ApiServiceServer (missing "trading-system/grpc/api/proto".mustEmbedUnimplementedApiServiceServer method)
                have mustEmbedUnimplementedApiServiceServer()
                want "trading-system/grpc/api/proto".mustEmbedUnimplementedApiServiceServer()
  • 解决方法 同issue2
  • 用如下命令

protoc --go_out=plugins=grpc:./ *.proto

问题总结

  • google.golang.org/protobuf/cmd/protoc-gen-go
    • 插件错误,目前google自己包不支持grpc插件功能

    • 参考issue:https://github.com/golang/protobuf/issues/1070

    • 错误提示

plugins are not supported; use 'protoc --go-grpc_out=...' 
  • github.com/golang/protobuf/protoc-gen-go

    • github提供的插件是支持的
  • 版本兼容支持,目前以下版本是兼容的

    • github.com/golang/protobuf v1.5.2
    • google.golang.org/grpc v1.39.0
    • google.golang.org/protobuf v1.27.1
  • 关于go.mod文件,自动升级的问题

In Go 1.15 and lower, the -mod=mod flag was enabled by default, so updates were performed automatically. Since Go 1.16, the go command acts as if -mod=readonly were set instead: if any changes to go.mod are needed, the go command reports an error and suggests a fix
  • go 1.16之后都是默认readonly
  • go 1.16之前的用 (go build, go get, go install, go list, go test, go mod tidy)-mod=readonly

标签:protoc,15,07,proto,grpc,golang,2021,go,protobuf
来源: https://blog.csdn.net/weixin_38805083/article/details/118756326

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有