2016-10-13 2 views
5

Ich versuche, google/protobuf/timestamp.proto zu verwenden, mit grpc Plugin und golangWie predifined protobuf Typ (zB "google/protobuf/timestamp.proto") mit grpc in golang

Protoc verwenden - Ich ./ ./*.proto --go_out = Plugins = Grpc :.

#domain.proto 
syntax = "proto3"; 
option java_multiple_files = true; 
option java_package = "com.viant.xyz"; 
option java_outer_classname = "domain"; 

import "google/protobuf/timestamp.proto"; 

message Foo { 
    Timestamp modifiedTime = 1; 
    ... 
} 

Ich sehe die folgenden Fehler:

domain.proto: Import "google/protobuf/timestamp.proto" was not found or had errors. 
domain.proto:44:5: "Timestamp" is not defined. 

Bin ich etwas fehlt oder diese noch nicht unterstützt wird,

Antwort

2

Es ist noch nicht ganz unterstützt wird, aber man kann es funktioniert durch

message Foo { 
    google.protobuf.Timestamp modifiedTime = 1; 
    ... 
} 

verändert und durch Fixieren Importdatei erzeugt

import google_protobuf "google/protobuf/timestamp.pb" 

zu

import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" 
3

hinzufügen /usr/local/include Pfade enthalten verwenden /usr/local/include/google/api/timestamp.proto:

protoc -I/usr/local/include -I. --go_out=plugins=grpc:. *.proto 

Wie Sie in timestamp.proto, Timestamp existiert in Paket sehen google.protobuf, so dass Sie ändern müssen, um zu verwenden, Timestamp wie folgt:

message Foo { 
    google.protobuf.Timestamp modifiedTime = 1; 
    ... 
} 
0

Ich umgeht das Problem, indem ich eine Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp Option an das Go Grpc-Plugin übergibt.

Mit anderen Worten, ich rufe

protoc --go_out=plugins=grpc,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp:outputdir input.proto 

Es ist ein bisschen wie ein Hack ist. "Glücklicherweise" verwende ich bereits viele Mprotofile=go/pkg/import/path Parameter in meinem Build-Setup, so dass es einfach hinzuzufügen war.

Verwandte Themen