Импорт файла прото из другого пакета - PullRequest
0 голосов
/ 10 марта 2019

У меня есть два сервиса: Story и Tag. Файлы структурированы следующим образом:

Story
|-- StoryService
|   `-- proto
|       `-- storyservice.proto
`-- TagService
    `-- proto
        `-- tagservice.proto

Каждый из .proto файлов должен использовать сообщения от другого. Как я могу импортировать их друг в друга? Я пытался import "StoryService/proto/storyservice.proto", но это не сработало.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Вы не можете импортировать два прото-файла друг в друга. Есть два решения для вашего сценария. 1. Наличие третьего прото-файла, который содержит все общие определения. 2. Создание всех общих определений в одном из двух имеющихся у вас прототипов, чтобы один мог импортировать другой.

0 голосов
/ 10 марта 2019

Если вы используете protoc, все пути поиска для директив импорта должны указываться относительно одной из папок, перечисленных в параметре -I (--proto_path). Например. если вы запустите protoc -I/path/to/Story --go_out=out StoryService/proto/storyservice.proto, он сможет импортировать TagService/proto/tagservice.proto (поскольку его путь относительно папки Story, указанной в -I).

Сказав это, вам не нужно заставлять каждый из ваших прототипов импортировать по одному. Рекурсивный импорт файла прото не будет работать с сообщением об ошибке, похожим на это:

a.proto: File recursively imports itself: a.proto -> b.proto -> a.proto
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...