Protobuf导入google/protobuf/timestamp.proto。

6

我的proto文件如下:

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

我已经遵循了这个指南并查看了这个问题。 我如何导入well-known类型? 我需要下载其他东西吗? 我怎么能确定当前安装的确切well-known类型是什么? 谢谢。


在 import proto 目录下,是否有一个 google/protobuf/timestamp.proto 的目录树? - Marc Gravell
@MarcGravell 不需要。我需要复制/粘贴原型文件吗? - user2133814
根据 https://medium.com/@amsokol.com/tutorial-how-to-develop-go-grpc-microservice-with-http-rest-endpoint-middleware-kubernetes-daebb36a97e9,看起来这就是答案。@MarcGravell - user2133814
看这个,这个解决方法对我有用:https://github.com/akka/akka-grpc/issues/917 - Jorge Constanzo
1个回答

8
"

google/protobuf/timestamp.proto" 被存储在路径:/usr/local/include/google/protobuf。

请检查是否存在 /usr/local/include/google/protobuf 目录。

如果没有,则说明安装 protobuf 时出现错误,请重新检查所遵循的安装步骤或尝试重新安装。

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

"

1
Windows 中,这个路径 (/usr/local/include) 的等效路径是什么?我有一个类似的问题,但是在 Windows 操作系统中。我应该把 protobuf 的 proto 文件放在哪里? - Nurzhan Nogerbek
1
如果文档中提到这一点就好了。我尝试了两个教程,一个是Go的,另一个是Java的,因为这些都是我们组织使用的语言。两个教程都没有解释导入的来源,文档参考部分的某个区域说了类似于“详情请见google/profobuf/descriptors.proto”(但那个文件在哪里呢?!)。最终,在我试图搜索导入来源的过程中,我找到了这个Stack Overflow答案。 - Matt Welke
我同意@MattWelke,很高兴这个答案有所帮助。 - Kartavya Ramnani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接