grpc неправильно компилирует мои сообщения

Я пытаюсь скомпилировать свой файл .proto:

syntax = "proto3";

package chat;

message Person {
  string name = 1;
  string family = 2;
  int32 age = 3;
}

message SearchPerson {
  string name = 1;
}

service PersonService {
  rpc GetPerson (SearchPerson) returns (Person) {}
  rpc GetPeople (SearchPerson) returns (stream Person) {}
}

и когда я запустил эту команду:

./bin/protoc --go-grpc_out=. ./proto/person.proto

для меня создан новый файл (person_grpc.pb.go), но у меня ошибка для моих сообщений и служб:

UnResolved Type for SearchPerson

и вы можете видеть, что новый файл дает мне ошибку (неразрешенный тип) для моих сообщений и служб. Что проблема?


person erfanmorsali    schedule 15.12.2020    source источник
comment
Можете ли вы переименовать свой пакет в прото-файле во что-то другое, кроме grpc? Это может конфликтовать с импортом пакета grpc.   -  person TehSphinX    schedule 15.12.2020
comment
я изменил пакет на связь и попробовал еще раз, и ничего не изменилось   -  person erfanmorsali    schedule 15.12.2020


Ответы (1)


Я предлагаю вам добавить директиву go_package в ваши файлы (как описано в документе), которые идеально отражают путь к вашему пакету/проекту, например:

syntax = "proto3";

package chat;

option go_package = "example.com/foo/chat";

// option go_package = "chat";


message Person {
  string name = 1;
  string family = 2;
  int32 age = 3;
}

Затем измените свой сценарий соответствующим образом

./bin/protoc --go-grpc_out=./chat ./proto/person.proto

Затем вы сможете использовать из пакета chat вашего проекта

person Matteo    schedule 15.12.2020