Вернуться к более ранней версии 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?

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

Другие вопросы по тегам