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.
不足しているプラグインは https://github.com/grpc/grpc-go に実装されています。
以下のコマンドはそれを修正する必要があります
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
Golang Protobufは、APIv2と呼んでいるGoプロトコルバッファの新しいバージョンをリリースしました。
APIv2はAPIv1との下位互換性がないため、すべてのGolangコードを新しいAPIに適合させる必要があります。
移行手順:
新しいコード生成を実行するには、次の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"