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