Вернуться к более ранней версии protoc-gen-go

Я пытаюсь скомпилировать файлы protobuf в golang. После компиляции я вижу это в сгенерированном pb.go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
//  protoc-gen-go v1.23.0
//  protoc        v3.12.3

а также

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

Однако ранее сгенерированный pb.go имеет

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

В версии 4 пакета proto код ломается. Как я могу скомпилировать ProtoPackage версии 3?


person Spirit_Coffee    schedule 30.09.2020    source источник


Ответы (1)


Проблема, похоже, связана со старой версией protobuf lib. ProtoPackageIsVersion3 для 1.3.* и ProtoPackageIsVersion4 для 1.4+, вы можете увидеть обновление здесь: https://github.com/golang/protobuf/releases/tag/v1.4.0

Я бы рекомендовал обновить до более новой версии, так как, например. googleapis также полагаются на более новую версию. См. https://developers.google.com/protocol-buffers/docs/reference/go/faq#enforce-version-apiv1

Если по какой-то причине вам все еще нужно использовать более старую версию всего, вам понадобится protobuf версии 1.3.5 и, скорее всего, вручную соберите proto-gen-go и protoc для соответствия. Вы можете увидеть аналогичную проблему с шагами здесь: https://github.com/golang/protobuf/issues /1090

person dmaixner    schedule 01.10.2020