web-dev-qa-db-ja.com

protoc-gen-go-grpc:プログラムが見つからない、または実行できない

go version:goバージョンgo1.14 linux/AMD64

go.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
)

次のコマンドを実行しています。

protoc -I ./src/pbdefs/protos/ --go-grpc_out=. src/pbdefs/protos/*.proto

.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.
6
Ayush Gupta

不足しているプラ​​グインは https://github.com/grpc/grpc-go に実装されています。

以下のコマンドはそれを修正する必要があります

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
3
irzhy

Golang Protobufは、APIv2と呼んでいるGoプロトコルバッファの新しいバージョンをリリースしました。

APIv2はAPIv1との下位互換性がないため、すべてのGolangコードを新しいAPIに適合させる必要があります。

新しいAPIについての詳細 here および here

移行手順:

新しいコード生成を実行するには、次の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

次に、次のコマンドを使用してコードを生成します。

  # 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"
0