【问题标题】:Importing “google/protobuf/descriptor.proto” in golang在 golang 中导入“google/protobuf/descriptor.proto”
【发布时间】:2018-10-20 00:48:16
【问题描述】:

我正在使用custom options 为我的原型服务定义定义招摇注解。

已经有这个swagger annotations 的实现,所以我只需要在我的 .proto 服务定义中导入这个实现

import "protoc-gen-swagger/options/annotations.proto";
...

问题是这个库依赖于 google/protobuf/descriptor.proto 并且这个描述符库是根据 proto2 规范创建的(这个库来自于协议缓冲区/protobuf project)

syntax = "proto2";
package google.protobuf; 

所以当我尝试为 php 构建原型时,我收到了错误:

-php_out: google/protobuf/descriptor.proto: Can only generate PHP code 
for proto3 .proto files. Please add 'syntax = "proto3";' to the top of 
your .proto file.

有谁知道我在哪里可以找到原型缓冲区版本 3 上 google/protobuf/descriptor.proto 的原型定义? o 我该如何解决这个问题?

【问题讨论】:

    标签: go swagger protocol-buffers


    【解决方案1】:

    生成器库 protoc-gen-swagger 仅支持 protobuf 版本 3。除非您将 proto2 更改为 proto3,否则您的错误将不断出现。请阅读https://grpc-ecosystem.github.io/grpc-gateway/docs/usage.html

    您的错误信息中也明确说明:

    -php_out: google/protobuf/descriptor.proto: 只能生成PHP代码 对于 proto3 .proto 文件。请添加 'syntax = "proto3";'到顶部 你的 .proto 文件。

    【讨论】:

    • 是的,我在注释定义中使用 proto3,但 protoc-gen-swagger 依赖于 google/protobuf/descriptor.proto(此库来自 protocolbuffers/protobuf/google 项目)和我只在 proto2 version 上找到了那个库,所以我无法为 php 生成代码。我不知道从哪里可以得到这个库 google/protobuf/descriptor.proto on proto3。
    • 我遇到了类似的问题,文件 google/protobuf/descriptor.proto 不会从 go protobuf 的任何依赖项中安装。而是引用了 google 的原始 src proto 类型,它们位于:github.com/protocolbuffers/protobuf/blob/master/src/google/… 并将由编译器安装。检查descriptor.proto 文件是否存在于usr/include/google/protobuf/usr/local/include/google/protobuf/ 中。可能是失踪了。
    猜你喜欢
    • 2020-05-31
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-04-04
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多