protoc --go-grpc_out 生成代码在 --go_out 生成代码的视野之外
protoc --go-grpc_out generate code in out of vision of --go_out generated code
在以前的产品中,我使用旧的 protoc-gen-go,它允许使用插件并在同一个 pb 文件中生成 serialization/deserialization 和 gRPC client/server
据我所知,protoc-gen-go v1.27.1 将不允许插件并要求对 client\server 代码使用 go-grpc_out 标志
遵循这个命令
protoc -I /usr/local/include -I $PWD/api/dummy-proto --go_out=generated --go-grpc_out=generated --go_opt=paths=source_relative proto/v1/foo.proto
我得到了
generated
|_proto
|_v1
|_dummy
| |_foo_grpc.pb.go //package dummy
|_foo.pb.go //package dummy
由于创建了“虚拟”文件夹 foo_grpc.pb.go 函数看不到 foo.pb.go
中生成的请求和响应
我做错了什么?是否可以像以前一样生成一个文件?将 foo_grpc.pb.go 移动到与 foo.pb.go.
相同的水平后,它将正常工作
也可以使用像 --go_out=import_path="
这样的旧标志,并在像 -go_out=import_path=grpc_v1_proto,M$PWD/proto/v1/foo.proto=grpc_v1_proto"
foo.proto
syntax = "proto3";
package dummy.v1.foo;
option go_package = "proto/v1/dummy";
import "proto/v1/structures.proto";
service FooService {
rpc reverse(ReverseRequest) returns (ReverseResponse);
rpc getBar(GetBarRequest) returns (GetBarResponse);
}
message ReverseRequest {
string text = 1;
}
message ReverseResponse {
string reversed_text = 1;
}
message GetBarRequest {
}
message GetBarResponse {
structures.Bar bar = 1;
}
根据您需要添加的评论 --go-grpc_opt=paths=source_relative
。 basics tutorial 中对此进行了介绍(但实际上只是给出了没有太多细节的命令)。
protoc-gen-go-grpc
uses code shared with protoc-gen-go
to process most of these options so the documentation for Go Generated Code 可能会回答您的问题(只需将 go_opt
更改为 go-grpc_opt
)。
在以前的产品中,我使用旧的 protoc-gen-go,它允许使用插件并在同一个 pb 文件中生成 serialization/deserialization 和 gRPC client/server
据我所知,protoc-gen-go v1.27.1 将不允许插件并要求对 client\server 代码使用 go-grpc_out 标志
遵循这个命令
protoc -I /usr/local/include -I $PWD/api/dummy-proto --go_out=generated --go-grpc_out=generated --go_opt=paths=source_relative proto/v1/foo.proto
我得到了
generated
|_proto
|_v1
|_dummy
| |_foo_grpc.pb.go //package dummy
|_foo.pb.go //package dummy
由于创建了“虚拟”文件夹 foo_grpc.pb.go 函数看不到 foo.pb.go
中生成的请求和响应我做错了什么?是否可以像以前一样生成一个文件?将 foo_grpc.pb.go 移动到与 foo.pb.go.
相同的水平后,它将正常工作也可以使用像 --go_out=import_path="
这样的旧标志,并在像 -go_out=import_path=grpc_v1_proto,M$PWD/proto/v1/foo.proto=grpc_v1_proto"
foo.proto
syntax = "proto3";
package dummy.v1.foo;
option go_package = "proto/v1/dummy";
import "proto/v1/structures.proto";
service FooService {
rpc reverse(ReverseRequest) returns (ReverseResponse);
rpc getBar(GetBarRequest) returns (GetBarResponse);
}
message ReverseRequest {
string text = 1;
}
message ReverseResponse {
string reversed_text = 1;
}
message GetBarRequest {
}
message GetBarResponse {
structures.Bar bar = 1;
}
根据您需要添加的评论 --go-grpc_opt=paths=source_relative
。 basics tutorial 中对此进行了介绍(但实际上只是给出了没有太多细节的命令)。
protoc-gen-go-grpc
uses code shared with protoc-gen-go
to process most of these options so the documentation for Go Generated Code 可能会回答您的问题(只需将 go_opt
更改为 go-grpc_opt
)。