如何解决与此错误消息的冲突?

And*_*kiv 5 go protocol-buffers proto kubernetes

我已将go mod tidyprotobuf 更新为 github.com//golang/protobuf@v1.4.0
我的项目使用 github.com/ericchiang/k8s@v1.2.0 我构建了二进制文件,当我尝试运行它时,我收到此恐慌错误:

panic: mismatching message name: got k8s.io.kubernetes.pkg.watch.versioned.Event, want github.com/ericchiang.k8s.watch.versioned.Event

goroutine 1 [running]:
google.golang.org/protobuf/internal/impl.legacyLoadMessageDesc(0x1f8d6c0, 0x1b85dc0, 0x1ce794f, 0x2f, 0x0, 0x0)
        /home/andriy/go/pkg/mod/google.golang.org/protobuf@v1.21.0/internal/impl/legacy_message.go:136 +0x882
google.golang.org/protobuf/internal/impl.legacyLoadMessageInfo(0x1f8d6c0, 0x1b85dc0, 0x1ce794f, 0x2f, 0x4f7b57)
        /home/andriy/go/pkg/mod/google.golang.org/protobuf@v1.21.0/internal/impl/legacy_message.go:48 +0xbd
google.golang.org/protobuf/internal/impl.Export.LegacyMessageTypeOf(0x1f4f0a0, 0x0, 0x1ce794f, 0x2f, 0xc000399360, 0xc0000a00d0)
        /home/andriy/go/pkg/mod/google.golang.org/protobuf@v1.21.0/internal/impl/legacy_export.go:35 +0xa5
github.com/golang/protobuf/proto.RegisterType(0x1f4f0a0, 0x0, 0x1ce794f, 0x2f)
        /home/andriy/go/pkg/mod/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0/proto/registry.go:186 +0x4d
github.com/ericchiang/k8s/watch/versioned.init.0()
        /home/andriy/go/pkg/mod/github.com/ericchiang/k8s@v1.2.0/watch/versioned/generated.pb.go:70 +0x4b
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,或者我应该将 protobuf 降级到 v1.3.5

小智 2

我遇到了和你一样的问题,你可以直接进入错误路径更改名称。将 generated.pb.go 的 init() 函数中的 github.com/ericchiang.k8s.watch.versioned.Event 替换为 k8s.io.kubernetes.pkg.watch.versioned.Event。