首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成网关原型-grpc网关时的proto grror :程序未找到或不可执行

生成网关原型-grpc网关时的proto grror :程序未找到或不可执行
EN

Stack Overflow用户
提问于 2022-11-19 08:15:20
回答 1查看 35关注 0票数 0

我也找到了类似的职位,但它们已经相当老了,很遗憾,它们并没有解决我的问题。

我正在尝试为我的GoLang GRPC服务添加一个网关

代码语言:javascript
复制
PROJ_PATH=${CURDIR}

.PHONY: proto
proto: ## Generate protobuf code
# Compile proto files inside the project.
    protoc api.proto --proto_path=${PROJ_PATH}/proto --go_out=. --go-grpc_out=. \
            --grpc-gateway_out . \
            --grpc-gateway_opt generate_unbound_methods=true \
            --openapiv2_out . \
            --openapiv2_opt logtostderr=true \
            --openapiv2_opt generate_unbound_methods=true

我添加了这两个依赖项

代码语言:javascript
复制
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2

但我还是明白他的错误

代码语言:javascript
复制
protoc-gen-grpc-gateway: 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
--grpc-gateway_out: protoc-gen-grpc-gateway: Plugin failed with status code 1.
make: *** [proto] Error 1

我不得不删除GRPC文件中的导入和网关选项,因为这个错误,所以看起来我有错误的插件,但是读这里告诉我并非如此。

代码语言:javascript
复制
google/api/annotations.proto: File not found.
api.proto:5:1: Import "google/api/annotations.proto" was not found or had errors.
make: *** [proto] Error 1
代码语言:javascript
复制
syntax = "proto3";

option go_package = "pkg/api";

import "google/api/annotations.proto";  <---- had to remove

service ApiService {
    rpc Test(TestRequest) returns (TestResponse){

        option (google.api.http) = {  <---- had to remove
            get: "/v1/test"
            body: "*"
        };
    }
}

如有任何建议,将不胜感激。

-解决了

代码语言:javascript
复制
go install \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest

然后将路径添加到proto命令中。

代码语言:javascript
复制
--plugin=protoc-gen-grpc-gateway=${GOPATH}/bin/protoc-gen-grpc-gateway \

完全命令..。

代码语言:javascript
复制
protoc api.proto --proto_path=${PROJ_PATH}/proto --go_out=. --go-grpc_out=. \
       --grpc-gateway_out . \
       --grpc-gateway_opt generate_unbound_methods=true \
       --plugin=protoc-gen-grpc-gateway=${GOPATH}/bin/protoc-gen-grpc-gateway \
       --openapiv2_out . \
       --openapiv2_opt logtostderr=true \
       --openapiv2_opt generate_unbound_methods=true
EN

回答 1

Stack Overflow用户

发布于 2022-11-20 16:35:12

我不得不像这样安装二进制文件

代码语言:javascript
复制
go install \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest

然后用路径更新proto命令。

代码语言:javascript
复制
--plugin=protoc-gen-grpc-gateway=${GOPATH}/bin/protoc-gen-grpc-gateway \

完全原命令

代码语言:javascript
复制
PROJ_PATH=${CURDIR}

.PHONY: proto
proto: ## Generate protobuf code
# Compile proto files inside the project.
    protoc api.proto --proto_path=${PROJ_PATH}/proto --go_out=. --go-grpc_out=. \
           --grpc-gateway_out . \
           --grpc-gateway_opt generate_unbound_methods=true \
           --plugin=protoc-gen-grpc-gateway=${GOPATH}/bin/protoc-gen-grpc-gateway \
           --openapiv2_out . \
           --openapiv2_opt logtostderr=true \
           --openapiv2_opt generate_unbound_methods=true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74498464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档