我该如何使用protoc gen go grpc



我正在尝试为一些协议缓冲区以及gRPC服务生成Go代码。

在过去,我曾将https://github.com/golang/protobuf与生成命令一起使用,该命令看起来像这样:

//go:generate protoc --proto_path=. --go-out=. --go_opt=paths=source_relative <file>.proto
//go:generate protoc --proto_path=. --go_grpc_out=. --go_grpc_opt=paths=source_relative <file>.proto

这种方法运行良好,但回购已被google.golang.org/protobufgoogle.golang.org/grpc取代。

从我所读到的内容来看,这是一个有意分离protobuf和gRPC项目发布周期的拆分。

使用新的存储库,我安装了这样的工具:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

这两个工具都已安装,并且在路径上可见。我遇到的问题是protocprotoc-gen-go正在寻找较旧的工具protoc-gen-go_grpc。注意下划线。

我一直在阅读我能找到的所有文档和Github问题,还没有弄清楚如何使用新的protoc-gen-go-grpc。注意破折号。

$ echo $GOPATH
/Users/<username>/dev/go
$ echo $GOBIN
/Users/<username>/dev/go/bin
$ which protoc
/opt/homebrew/bin/protoc
$ which protoc-gen-go
/Users/<username>/dev/go/bin/protoc-gen-go
$ which protoc-gen-go_grpc
protoc-gen-go_grpc not found
$ which protoc-gen-go-grpc
/Users/<username>/dev/go/bin/protoc-gen-go-grpc

我的问题修复起来很简单,但发现起来很烦人。

运行protoc时,使用--go_grpc_out标志查找protoc-gen-go_grpc

运行protoc时,使用--go-grpc_out标志查找protoc-gen-go-grpc

似乎protoc没有定义好的、有文档记录的标志,当提供了不正确的标志时会出错,而是使用这些标志来确定要使用哪个插件。如果你拼错了标志,它会查找错误的插件。

最新更新