在使用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及以下也可以解决。