解决:Import googleapiannotations.proto was not found or had errors

解决:Import googleapiannotations.proto was not found or had errors,第1张

解决:Import “google/api/annotations.proto” was not found or had errors. 一、问题概述

在使用protoc命令的时候,很可能会出现这样的问题。因为proto文件中有类似于import "google/api/annotations.proto";这样的导包 *** 作,protoc命令默认会导入同级目录下的proto文件,所以,如果你import的是同级目录下的proto文件一般不会出现was not found or had errors.的问题

二、解决办法

既然是找不到我们要importproto文件,那我们就通过在命令中添加参数去指定好。

打开protoc帮助文档

protoc -h

会出现下面的内容:

Parse PROTO_FILES and generate output based on the options given:
  -IPATH, --proto_path=PATH   Specify the directory in which to search for
                              imports.  May be specified multiple times;
                              directories will be searched in order.  If not
                              given, the current working directory is used.
                              If not found in any of the these directories,
                              the --descriptor_set_in descriptors will be
                              checked for required proto file.
## ...下面的省略

百度翻译一下:

指定要在其中搜索导入的目录。 可以多次指定;将按顺序搜索目录。
如果未给出,则使用当前工作目录。
如果在这些目录中找不到,将检查他 --descriptor_set_in 描述符以查找所需的原型文件。

大概意思就是可以通过这个命令指定要搜索的目录,你需要的importprotoc文件可以通过这个命令指定,这个命令的简写是-I,下面将介绍如何使用

三、示例

就比如我自己遇到的这个问题:

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

通过查阅资料,得知可以通过如下方式下载得到对应的protoc文件:

1、下载mod

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.14.5

之所以下载这个,是因为在github.com\grpc-ecosystem\grpc-gateway@v1.14.5\third_party\googleapis\google\api目录下就有我们需要的annotations.proto文件。

执行完上述命令后,就会将protoc-gen-grpc-gateway下载到电脑的GOPATH下,自己电脑的GOPATH可以通过命令go env查看。

在这里,本人的是Windows系统, GOPATH=C:\Users\Administrator\go

通过浏览GOPATH目录,知道了我们import"google/api/annotations.proto"

所在的路径是C:\Users\Administrator\go\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.14.5\third_party\googleapis,换句话说也就是$GOPATH\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.14.5\third_party\googleapis,知道了这个后就可以进行下面的步骤了

2、命令中指定依赖:

注意: 路径中要用/ !!!

protoc -I $GOPATH/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.5/third_party/googleapis \
--go_out=plugins=grpc:. ./*.proto

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/996031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存