Go mod + grpc: импорт proto3 внешней библиотеки

В Go не так давно (с декабря 2021), практически язык для меня новый.

Описание проблемы:

  1. Создается grpc сервис на Go с использованием proto3 и с применением go mod зависимостей.
  2. В сервисе используется своя, но внешняя библиотека со своим описанием proto messages, и они нужны как вложенные описания сообщений этого сервиса.
  3. Библиотека подключается через go mod, тут проблем нет. Код, который маппит части библиотечных сообщений через методы мапперов библиотеки также проблем не вызывает. Код, который маппит в сервисе по своему - также видит компилированный и встроенный в библиотеку *.pb.go и работает.
  4. Но, при генерации proto для самого сервиса, компилятор protoc НЕ находит файл описаний из библиотеки, при стандартной компиляции. "Файл не найден".
  5. Если ему указать так: -I go list -m -f '{{ .Dir }}' gitlab.myrepos.ru/extLibrary , то он видит библиотеку, но после компиляции вижу в результате (myService.pb.go) это:

import api "api", что понятно, вызывает ошибку.

Причина понятна: protoc ничего не знает (и это правильно) о структуре зависимостей go mod

Как вообще в Go работать с внешним файлом .proto правильно?


Ответы (0 шт):