问题
这个错误是因为 .proto
文件中缺少必需的 go_package
选项。在 protobuf 生成 Go 代码时,这是关键配置项。
panda@VM:~/dev/pb$ protoc --go_out=. pb.proto
protoc-gen-go: unable to determine Go import path for "pb.proto"Please specify either:• a "go_package" option in the .proto source file, or• a "M" argument on the command line.See https://protobuf.dev/reference/go/go-generated#package for more information.--go_out: protoc-gen-go: Plugin failed with status code 1.
解决方案
1. 编辑 pb.proto文件
vim pb.proto
2. 添加 go_package
选项
在文件中添加以下内容(位置通常在 package
声明之后):
syntax = "proto3";package pb;// 添加这行(根据您的项目结构调整路径)
option go_package = "dev/pb";message Request {string group = 1;string key = 2;
}// ... 文件其他部分保持不变 ...
3. 保持文件后重新生成代码
protoc --go_out=. --go_opt=paths=source_relative pb.proto
go_package
选项说明
值格式 | 说明 | 示例值 |
---|---|---|
"dev/pb" | 相对导入路径(推荐) | 适用于大多数项目 |
"github.com/.../dev" | 完整导入路径(如果项目是模块) | "github.com/user/project/dev" |
"./pb" | 当前目录相对路径 | 最简单但可能不够灵活 |