Golang Go语言学习grpc-gateway中遇到的问题求助

发布于 1周前 作者 h691938207 来自 Go语言

Golang Go语言学习grpc-gateway中遇到的问题求助

各位好,这两天一直在看 grpc 相关的东西,然后 API 网关这块顺便了解了下 grpc-gateway,但是在看官方的例子中,gateway.proto 文件如下:

syntax = "proto3";

package gateway;

import "google/api/annotations.proto";

message Message {
    string msg = 1;
}

service Gateway {
    rpc Echo (Message) returns (Message) {
        option (google.api.http) = {
            post: "/api/v1/echo"
            body: "*"
        };
    }
}

之前已经顺利安装了 protoc-gen-grpc-gateway 插件,但是在执行如下语句:

protoc --grpc-gateway_out=logtostderr=true:. gateway.proto

老是提示如下的错误:

google/api/annotations.proto: File not found.
gateway.proto: Import "google/api/annotations.proto" was not found or had errors.

希望有熟悉的大佬们,麻烦帮忙解答下,如何安装这个缺失的 proto 文件


更多关于Golang Go语言学习grpc-gateway中遇到的问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

7 回复

这跟 grpc-gateway 没关系,你没设置好 proto 的搜索路径,如:protoc -I./path/find/name.proto xxxxx,建议看下 protoc 的用法

更多关于Golang Go语言学习grpc-gateway中遇到的问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


记得是要在 libs 里,忘记了

docker 直接来 namely/protoc-all

e.g.
docker run --rm <br> --user 1000:1000 <br> -v $PWD/proto:/defs <br> namely/protoc-all <br> -l go <br> -d /defs <br> -o /defs <br> --with-gateway

感谢提醒,我也注意到了这个问题,我看官方文档里设定的搜索路径是这些:-I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis,但是我的项目开启了 go mod 模式,$GOPATH/src 下面并没有这个包,倒是在$GOPATH/pkg/mod/xxxx 相应的目录下面才有。。。然而这个目录页面也是有多个 grpc-gateway 版本的,所以感觉这么写是不是有问题?

我刚才试了:protoc -I. -I$GOPATH/pkg/mod/github.com/grpc-ecosystem/[email protected]/third_party/googleapis --grpc-gateway_out=logtostderr=true:. gateway.proto,这样就可以了,确实是需要指定 proto 文件的完整路径才行,但是我的问题是,其实 [email protected] 同级目录下还有别的版本的包,如果在实际项目多人协作开发过程中,这么指定目录不会有问题么,以后升级了这个包咋办?

请问你是怎么解决的呀? 我 go 新手 也遇到这个问题了!

#5

#3

手动 Protoc 生产 grpc-gateway 的 stub 的话, 也要手动把 googleapis 几个文件引入

推荐使用官方的 buf 工具生成 stub

在学习Golang中的grpc-gateway时遇到问题是很常见的,以下是一些可能的解决方案:

  1. 依赖管理问题

    • 确保你的项目使用Go Modules进行依赖管理。
    • go.mod文件中添加grpc-gateway的依赖。
    • 使用go mod tidy命令来整理和下载依赖。
  2. 生成反向代理服务器问题

    • 确保你的protobuf服务定义文件中正确使用了Google API HTTP注解。
    • 使用protoc命令生成反向代理服务器代码,并检查生成的代码文件是否有语法错误或配置错误。
  3. 运行时错误

    • 确保服务器运行的端口没有被其他进程占用。
    • 使用go mod verify命令验证依赖的完整性。
    • 确保所有环境变量和配置文件都正确设置。
  4. 配置文件使用

    • grpc-gateway支持通过配置文件(如yaml或json)来设置参数,如gRPC服务端地址、HTTP监听端口等。
    • 可以使用viper等库来读取和处理配置文件。
  5. 调试和日志

    • 启用详细的日志记录,以便在出现问题时能够追踪和定位。
    • 使用标准化的日志记录和跟踪格式,以及集中式日志记录和跟踪工具(如ElasticSearch、Jaeger)。

如果在尝试上述解决方案后仍然遇到问题,建议查阅grpc-gateway的官方文档或寻求社区的帮助。同时,也可以考虑参加相关的线上或线下技术交流活动,与其他开发者交流经验和心得。

回到顶部