编译go版本proto3出现go_package错误

在使用protobuf2升到protobuf3时,更新了proto-gen-go,编译proto文件进报了错误

protoc-gen-go: unable to determine Go import path for "proto/ipc.proto"

Please specify either:
        • a "go_package" option in the .proto source file, or
        • a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

源文件为:

syntax = "proto3";

package ipc;

// 长连接Token验证请求
message GameAuthReq {
    string authToken = 1;    // Token
    string serverId = 2;    // 登录服务器ID
}

...

编译命令为:

protoc --go_out=. proto/ipc.proto
  • protoc-gen-go v1.27.1
  • protoc v3.12.3

原因是protoc-gen-go版本过高,对源proto文件需要添加包名。在proto文件中添加option go_package = "/ipc";就可以解决了。

syntax = "proto3";

package ipc;
option go_package = "/ipc";

// 长连接Token验证请求
message GameAuthReq {
    string authToken = 1;    // Token
    string serverId = 2;    // 登录服务器ID
}

...

还有一种解决办法就是把protoc-gen-go版本退回到1.3.2及以下也可以解决。

0%