前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用谷歌标准api时protobuf生成遇到的问题

使用谷歌标准api时protobuf生成遇到的问题

作者头像
天地一小儒
发布2022-12-28 14:07:28
1.7K0
发布2022-12-28 14:07:28
举报

在vscode时新增proto文件时,按下sr会出现一个快捷生成CRUD服务的例子

srvcrud

然后再protoc生成时发现报如下错误:

map/proto/service.proto:85:3: "FieldMask" is not defined.
map/proto/service.proto:35:44: "google.protobuf.Empty" is not defined.

网上找了一大堆源码,刚开始是直接引入两个的proto文件,地址是: https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/empty.proto

但下载这个库然后再protoc里加入proto_path后又发现报google.api.http找不到的错。 结果偶然在https://github.com/grpc-ecosystem/grpc-gatewayREADME.md上发现需要引入annotations.proto

annotations.proto

引入后又报一个undefined: runtime.CamelCaseFieldMask的错误,查看grpc-gateway网关的源码,发现在1.11.3版本后此方法被删除,怀疑是我本地版本过低的原因,但go install、go get好几次这个gateway的库也是这个错,无奈之下,只能手动在go mod里面降级,不得不说,这里go mod的强大性就体现出来了,改个数字就能降级升级。

go.mod

再重新生成,果然没有任何错误了。完成编译代码如下:

protoc -I$(GOPATH)/src:. -I/usr/local/include -I. \
        -I$(GOPATH)/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.11.2/third_party/googleapis \
        --go_out=plugins=grpc:.  --grpc-gateway_out=logtostderr=true:. \
        --swagger_out=logtostderr=true:. map/proto/service.proto
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档