Ayu*_*pta 27 go protocol-buffers grpc protoc
go version: 去版本 go1.14 linux/amd64
去.mod
module [redacted]
go 1.14
require (
github.com/golang/protobuf v1.4.0-rc.2
google.golang.org/grpc v1.27.1
google.golang.org/protobuf v1.20.0 // indirect
)
Run Code Online (Sandbox Code Playgroud)
我正在运行以下命令:
protoc -I ./src/pbdefs/protos/ --go-grpc_out=. src/pbdefs/protos/*.proto
Run Code Online (Sandbox Code Playgroud)
从.proto文件生成我的 GRPC 输出文件,但出现错误
protoc-gen-go-grpc: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
Run Code Online (Sandbox Code Playgroud)
irz*_*zhy 29
缺失的插件已在https://github.com/grpc/grpc-go实现。
下面的命令应该修复它
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
Run Code Online (Sandbox Code Playgroud)
小智 24
Golang Protobuf 发布了新版本的 Go 协议缓冲区,他们将其称为 APIv2。
由于 APIv2 不向后兼容 APIv1,因此我们需要为新 API 调整所有 Golang 代码。
迁移步骤:
为了运行新的代码生成,需要安装以下 gRPC gen 插件:
go get -u google.golang.org/protobuf/cmd/protoc-gen-go
go install google.golang.org/protobuf/cmd/protoc-gen-go
go get -u google.golang.org/grpc/cmd/protoc-gen-go-grpc
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令生成代码。
# generate the messages
protoc --go_out="$GO_GEN_PATH" -I "$dependecies" "$proto"
# generate the services
protoc --go-grpc_out="$GO_GEN_PATH" -I "$dependecies" "$proto"
Run Code Online (Sandbox Code Playgroud)
Ayu*_*pta 13
好的,刚刚发现,根据https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.20.0
v1.20
protoc-gen-go不支持生成 gRPC 服务定义。未来,gRPC 服务生成将由 Go gRPC 项目提供的新 protoc-gen-go-grpc 插件支持。该
github.com/golang/protobufprotoc根-GO的版本继续支持GRPC,将继续在可预见的将来也会如此。
编辑 29/05/2020:
根据评论中@Mark 的更新,根据github 上的跟踪问题,protoc-gen-go-grpc现已合并。但是,根据同一问题:
即使合并后,它也未发布(v0.0)并且可能会发生变化。我们确实计划添加一个要求,即未实现的服务实现包含在所有注册的服务中,并按照@neild 的建议,以命令行参数的形式提供一个逃生舱口。
如果你还没有这样做,那么你需要protoc-gen-go像这样安装插件:
go get github.com/golang/protobuf/protoc-gen-go
Run Code Online (Sandbox Code Playgroud)
这会将插件(如果您GOPATH是${HOME}/go)安装到:
${HOME}/go/bin/protoc-gen-go
Run Code Online (Sandbox Code Playgroud)
然后在运行时protoc,要么更新你的路径,要么像这样动态设置它:
PATH="${PATH}:${HOME}/go/bin" protoc ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35152 次 |
| 最近记录: |