当前位置: 首页 > 知识库问答 >
问题:

如何在不复制谷歌文件的情况下使工作协议生效?

东郭京
2023-03-14

我正在尝试使用https://github.com/grpc-ecosystem/grpc-gateway但是当我试着跑的时候

protoc-I/usr/local/include-I-I${GOPATH}/src-I${GOPATH}/src/github。com/grpc生态系统/grpc网关/third\u party/googleapis-go\u-out=plugins=grpc,路径=source\u-relative:。/示例/示例.proto

错误src/github。com/grpc-ecosystem/grpc-gateway/third\u party/googleapis:警告:目录不存在。

为了解决这个问题,我手动带来了必要的文件,但我觉得这是不必要的,有一种方法可以使其自动,我运行之前去获取-ugithub.com/grpc-ecosystem/grpc-gateway/

但还是不行


共有3个答案

司健柏
2023-03-14

我的解决方案是:

protoc --go_out=./ --go-grpc_out=./ -I$(go list -f '{{ .Dir }}' -m github.com/example/example) example/example.proto

它生成.pb。去_grpc.pb。转到当前目录中的文件,其中

github.com/example/example

要交互的go模块名称

示例/示例.proto

proto文件/文件的repo url相对路径

此外,在您应该通过在本地下载模块之前,请github.com/example/example

熊锐进
2023-03-14

看看这个(从Dockerfile中提取):

ARG VERS="3.13.0"
ARG ARCH="linux-x86_64"
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${VERS}/protoc-${VERS}-${ARCH}.zip --output-document=./protoc-${VERS}-${ARCH}.zip && \
    apt update && apt install -y unzip && \
    unzip -o protoc-${VERS}-${ARCH}.zip -d protoc-${VERS}-${ARCH} && \
    mv protoc-${VERS}-${ARCH}/bin/* /usr/local/bin && \
    mv protoc-${VERS}-${ARCH}/include/* /usr/local/include && \
    go get -u github.com/golang/protobuf/protoc-gen-go && \
    go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

ARG REPO="..."
ARG MODULE="github.com/${REPO}"

# Generates the Golang protobuf files
# NB Uses `go list` to determine the correct Modules directory for the package (!) containing Google APIs protos
RUN protoc \
    --proto_path=. \
    --proto_path=$(go list -f '{{ .Dir }}' -m github.com/grpc-ecosystem/grpc-gateway)/third_party/googleapis \
    --go_out=plugins=grpc,module=${MODULE}:. \
    ./protos/*.proto

在构建使用gRPC网关的基于gRPC的解决方案时,我经常使用此片段。

第一个RUN获取协议协议-gen-go-协议-gen-grpc-网关

第二次运行使用go list来识别已安装的grpc网关模块,并指向它。

邓深
2023-03-14

您尝试下载的原型来自此模块

env GO111MODULE=on go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
 类似资料:
  • 我知道NAT穿越,晕眩,转身,冰和它的使用。我想知道这些是否在像BitTorrent这样的对等文件共享应用程序中实现。追踪者是否通过使用眩晕或通过转接帮助创建直接连接来促进NATs后面的同行之间的通信。在分布式哈希表(DHT)的情况下,一个对等点将如何与NAT后的其他对等点通信?

  • 事件处理程序添加到GameGui.java类的GridPane中,从第82行开始。 基本上,我试图找到您在网格窗格中拖动这个对象的任何节点的索引。通过将SetonMouseEnter应用到gridpane中的每个节点,我可以在不拖动的情况下完成这一任务,但是当我试图利用SetonMouseDragEnter时,我什么也没有得到。 有人有办法让这个工作吗? 这些是我应用于GridPane中节点的事件

  • 我正在建立一个应用程序,并使用MariaDB作为我的数据库。我有一张桌子“kick_votes”。其主键包含三个字段: null

  • 我想使用谷歌云存储备份多台服务器。每个服务器都需要访问包含其备份的bucket。服务器不应访问任何其他服务器的存储桶。 我以前使用过Amazon S3,只需在IAM中为每个服务器创建一个用户,并为该用户分配一个允许访问特定桶的策略。

  • 我正在构建一个软件来远程控制连接到另一台PC的无线电硬件。 我计划使用ZeroMQ进行传输,并使用类似于RPC的请求-回复,其上有表示操作的不同消息。 虽然我的大多数消息只是一些控制和状态信息,但应该可以选择设置要传输的数据blob或请求要接收的数据blob。这些数据blob通常在5-10MB的范围内,但也应该可以使用最大100MB的较大blob。 对于消息格式,我发现google协议缓冲区非常有

  • 在C语言中,我可以用和调用来创建新文件,当且仅当当前没有同名文件时。我还没能在哈斯克尔找到这样做的方法。我更喜欢提供的友好的东西,最好是为我完成所有棘手的异常处理。(我不一定期望它能正确地为我完成,但那是另一回事。)