webentwicklung-frage-antwort-db.com.de

protoc-gen-go-grpc: Programm nicht gefunden oder nicht ausführbar

go version: go version 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
)

Ich führe den folgenden Befehl aus:

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

um meine GRPC-Ausgabedateien aus .proto Dateien, bei denen eine Fehlermeldung angezeigt wird

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

das fehlende Plugin wurde unter https://github.com/grpc/grpc-go implementiert.

befehl unten sollte es beheben

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

Der Golang Protobuf hat eine neue Version der Go-Protokollpuffer veröffentlicht, die sie als APIv2 bezeichnen.

Da APIv2 nicht abwärtskompatibel mit APIv1 ist, müssen wir unseren gesamten Golang-Code für die neue API anpassen.

Sie können mehr über die neue API erfahren hier und hier

Migrationsschritte:

Um die neue Codegenerierung ausführen zu können, müssen die folgenden gRPC-Plugins installiert werden:

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

Verwenden Sie dann den folgenden Befehl, um den Code zu generieren.

  # 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