【问题标题】:protobuf import google/protobuf/timestamp.protoprotobuf 导入 google/protobuf/timestamp.proto
【发布时间】:2020-05-31 01:53:19
【问题描述】:

我的原型文件是:

syntax = "proto3";

import "google/protobuf/timestamp.proto";

service Foo {
  rpc now(NowRequest) returns (NowResponse) {}
}

message NowRequest {}

message NowResponse {
  google.protobuf.Timestamp now = 1;
}

我生成代码的命令和产生的错误是:

protoc foo.proto --go_out=plugins=grpc,import_path=proto:internal/proto
foo.proto:3:1: Import "google/protobuf/timestamp.proto" was not found or had errors.
foo.proto:12:3: "google.protobuf.Timestamp" is not defined.

我的协议版本是:

protoc --version
libprotoc 3.11.3

我已关注此guide 并查看此question。如何导入众所周知的类型?我需要下载其他东西吗?我如何知道我当前安装的确切众所周知的类型是什么?谢谢。

【问题讨论】:

  • import proto目录下,有没有google/protobuf/timestamp.proto的目录树?
  • @MarcGravell 否。我需要在那里复制/粘贴 proto 文件吗?
  • @MarcGravell 基于medium.com/@amsokol.com/… 看来这就是答案
  • 你有 /usr/local/include/google/protobuf 目录吗?您使用的是什么操作系统?这是错误的 protobuf 安装问题。您可以在这里找到更多帮助:github.com/grpc-ecosystem/grpc-gateway/issues/422
  • @Kartavya 我没有。我只是从 zip 中复制了 protoc exe 并没有注意到包含。很抱歉错过了事后看来如此明显的事情。您要发布该评论作为答案吗?谢谢

标签: protocol-buffers grpc grpc-go


【解决方案1】:

“google/protobuf/timestamp.proto”存储在路径中:/usr/local/include/google/protobuf

请检查您是否有 /usr/local/include/google/protobuf 目录。

如果不是,则说明 protobuf 安装出错。请追溯所遵循的安装步骤或尝试重新安装。

请在此处找到更多帮助:https://github.com/grpc-ecosystem/grpc-gateway/issues/422

【讨论】:

  • Windows 中这条路径 (/usr/local/include) 的等价物是什么?我有类似的问题,但在 Windows 操作系统中。我应该把 protobuf 的 proto 文件放在哪里?
  • 如果文档中提到了这一点,那就太好了。我尝试遵循其中的两个教程,一个用于 Go,一个用于 Java,因为这些是我的组织使用的语言。两个教程都没有解释导入的来源,文档参考部分的一个区域说“有关详细信息,请参阅google/profobuf/descriptors.proto”(但该文件在哪里?!)。最终我在尝试谷歌搜索进口来源后找到了这个 Stack Overflow 答案。
  • 我同意@MattWelke,很高兴这个答案有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2017-04-30
  • 2019-07-29
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多