protobuf импорт google / protobuf / timestamp.proto

Мой прото-файл:

syntax = "proto3";

import "google/protobuf/timestamp.proto";

service Foo {
  rpc now(NowRequest) returns (NowResponse) {}
}

message NowRequest {}

message NowResponse {
  google.protobuf.Timestamp now = 1;
}

Моя команда для генерации кода и результирующая ошибка:

protoc foo.proto --go_out=plugins=grpc,import_path=proto:internal/proto
foo.proto:3:1: Import "google/protobuf/timestamp.proto" was not found or had errors.
foo.proto:12:3: "google.protobuf.Timestamp" is not defined.

Моя версия протокола:

protoc --version
libprotoc 3.11.3

Я следил за этим руководством и просмотрел это question. Как я могу импортировать хорошо известные типы? Мне нужно скачать что-нибудь еще? Как я могу определить, какие именно типы хорошо известны для моей текущей установки? Спасибо.


person user2133814    schedule 15.02.2020    source источник
comment
В каталоге import proto есть дерево каталогов для google / protobuf / timestamp.proto?   -  person Marc Gravell    schedule 15.02.2020
comment
@MarcGravell Нет. Нужно ли мне копировать / вставлять туда файлы прототипов?   -  person user2133814    schedule 15.02.2020
comment
@MarcGravell на основе medium.com/@amsokol.com/ похоже, что это ответ   -  person user2133814    schedule 16.02.2020
comment
У вас есть каталог / usr / local / include / google / protobuf? Какую ОС вы используете? Это ошибка установки protobuf. Дополнительную помощь можно найти здесь: github.com/grpc-ecosystem/grpc-gateway / issues / 422   -  person Kartavya Ramnani    schedule 17.02.2020
comment
@ Картавя не знаю. Я просто скопировал protoc exe из архива и не заметил включения. Прошу прощения за то, что упустил что-то столь очевидное в ретроспективе. Вы хотите опубликовать этот комментарий в качестве ответа? Спасибо   -  person user2133814    schedule 17.02.2020
comment
@ user2133814: Рад, что смог помочь, я опубликовал ответ для полноты картины. Всего наилучшего на вашем пути к API.   -  person Kartavya Ramnani    schedule 18.02.2020
comment
Привет, @ user2133814: Вы можете принять ответ, чтобы мы могли закрыть вопрос?   -  person Kartavya Ramnani    schedule 18.02.2020


Ответы (1)


"google / protobuf / timestamp.proto" сохраняется по пути: / usr / local / include / google / protobuf

Проверьте, есть ли у вас каталог / usr / local / include / google / protobuf.

В противном случае это означает, что при установке protobuf произошла ошибка. Повторите шаги по установке или попробуйте переустановить.

Дополнительную помощь можно найти здесь: https://github.com/grpc-ecosystem/grpc-gateway/issues/422

person Kartavya Ramnani    schedule 17.02.2020
comment
Что эквивалентно этому пути (/usr/local/include) в Windows? У меня аналогичная проблема, но в ОС Windows. Куда мне поместить прото-файлы protobuf? - person Nurzhan Nogerbek; 29.04.2020
comment
Было бы неплохо, если бы об этом упоминалось в документации. Я пробовал следовать двум руководствам, одному для Go и одному для Java, поскольку это языки, которые использует моя организация. Ни в одном из руководств не объяснялось, откуда пришел импорт, а в одной части справочного раздела документации говорилось что-то вроде подробностей, см. google/profobuf/descriptors.proto (но где этот файл ?!). В конце концов я нашел этот ответ о переполнении стека после попытки найти в Google, откуда идет импорт. - person Matt Welke; 09.02.2021
comment
Я согласен с @MattWelke, рад, что этот ответ помог. - person Kartavya Ramnani; 10.02.2021