Импорт прототипов и компиляция - PullRequest
0 голосов
/ 17 января 2020

У меня есть два файла прото в следующих каталогах -

parsers/
   > flights/
       > flights_proto/
           > flights.proto
           > flights.pb.go
   > flightspostbooking
       > flights_postbooking_proto/
           > flights_postbooking.proto
           > flights_postbooking.pb.go

Ниже приводится содержимое файлов прото -

flights.proto
=============

package "flights_proto";

message Flight {
   ...
}

flights_postbooking.proto
=========================

package "flights_postbooking_proto"
import "flights_proto/flights.proto"

message Cancel {
    Flight flight = 1;
    ...
}

Я не могу понять, как скомпилировать flights_postbooking.proto для создания файла pb.go.

Я попытался сделать следующее из каталога parsers.

protoc --proto_path=flightspostbooking/flights_postbooking_proto --proto_path=flights/flights_proto flightspostbooking/flights_postbooking_proto/flights_postbooking.proto --go_out=plugins:flights_postbooking_proto

Но я получаю сообщение об ошибке flights_proto/flights.proto: File not found

1 Ответ

0 голосов
/ 17 января 2020

Запустите protoc из каталога parsers и используйте базовый каталог для ваших прототипов, который будет .

protoc --proto_path=. --go_out=plugins=grpc:flightpostbooking/flights_postbooking_proto flightpostbooking/flights_postbooking_proto/flights_postbooking.proto

Поскольку в качестве базы у вас есть каталог parsers, ваш импорт должен быть:

import "flights/flights_proto/flights.proto"

Ключ должен использовать пути импорта относительно вашего proto_path.

...