Golang Go语言学习grpc-gateway中遇到的问题求助
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
这跟 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时遇到问题是很常见的,以下是一些可能的解决方案:
-
依赖管理问题:
- 确保你的项目使用Go Modules进行依赖管理。
- 在
go.mod
文件中添加grpc-gateway的依赖。 - 使用
go mod tidy
命令来整理和下载依赖。
-
生成反向代理服务器问题:
- 确保你的protobuf服务定义文件中正确使用了Google API HTTP注解。
- 使用
protoc
命令生成反向代理服务器代码,并检查生成的代码文件是否有语法错误或配置错误。
-
运行时错误:
- 确保服务器运行的端口没有被其他进程占用。
- 使用
go mod verify
命令验证依赖的完整性。 - 确保所有环境变量和配置文件都正确设置。
-
配置文件使用:
- grpc-gateway支持通过配置文件(如yaml或json)来设置参数,如gRPC服务端地址、HTTP监听端口等。
- 可以使用viper等库来读取和处理配置文件。
-
调试和日志:
- 启用详细的日志记录,以便在出现问题时能够追踪和定位。
- 使用标准化的日志记录和跟踪格式,以及集中式日志记录和跟踪工具(如ElasticSearch、Jaeger)。
如果在尝试上述解决方案后仍然遇到问题,建议查阅grpc-gateway的官方文档或寻求社区的帮助。同时,也可以考虑参加相关的线上或线下技术交流活动,与其他开发者交流经验和心得。