【问题标题】:gcloud endpoints deploy error unresolved typegcloud端点部署错误未解决类型
【发布时间】:2018-05-16 14:32:26
【问题描述】:

我正在尝试部署需要 google protobuf's Timestamp 的服务,但我收到了错误消息。

gcloud endpoints services deploy api_descriptor.pb api_config.yaml --validate-only

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT: Cannot 
convert to service config.
'ERROR: unknown location: Unresolved type '.google.protobuf.Timestamp''

我的生成 api_descriptor.pb 的命令:

protoc \
--plugin=protoc-gen-go=${GOBIN}/protoc-gen-go \
-I . proto/service.proto \
--descriptor_set_out=api_descriptor.pb \
--go_out=plugins=grpc:. \

proto 文件中需要 google.protobuf.Timestamp 的相关位:

syntax = "proto3";

package proto;

import "vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto";

message CandleStick {
    string ID = 1;
    double Open = 2;
    double Close = 3;
    double High = 4;
    double Low = 5;

    google.protobuf.Timestamp TimeStamp = 6;
}

尝试了几个小时未能成功解决此问题。提前致谢!

【问题讨论】:

  • 最新版本的 proto 编译器包括 timestamp.proto,因此您不再需要供应它。您可以使用:导入“google/protobuf/timestamp.proto”

标签: protocol-buffers google-cloud-endpoints grpc google-cloud-endpoints-v2


【解决方案1】:

在您的 protoc 命令行调用中,我认为您需要在生成的描述符中包含所有导入。您可以使用--include_imports

protoc \
--plugin=protoc-gen-go=${GOBIN}/protoc-gen-go \
--include_imports \
-I . proto/service.proto \
--descriptor_set_out=api_descriptor.pb \
--go_out=plugins=grpc:. \

【讨论】:

  • 谢谢!这行得通。我想我必须在 include_imports 标签中包含一个路径。
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2019-04-06
  • 2021-01-16
  • 2017-05-01
  • 1970-01-01
  • 2018-08-02
相关资源
最近更新 更多