github.com/mwitkow/go-proto-validators/validator.proto 找不到

杨帆

在写proto文件生成pb文件脚本的时候,提示github.com/mwitkow/go-proto-validators/validator.proto: File not found。为了能够更清楚了解场景,先介绍一下项目文件目录,如下图所示。
image.png

下面选择protobuf-spec文件下,任意一个proto文件为例来做展示和说明问题。节选proto文件部分代码,代码如下:

  syntax = "proto3";

  package ofc.app;

  import "google/protobuf/empty.proto";
  import "github.com/mwitkow/go-proto-validators/validator.proto";

  //添加应用
  message AppRequest{
      int64 cid = 1;
      string appkey = 2;
      // @inject_tag: v:"required#应用名不能为空"
      string name = 3[(validator.field) = {string_not_empty: true}];
      // @inject_tag: v:"required#行业类型不能为空"
      string industry_type = 4[(validator.field) = {string_not_empty: true}];
      string info = 5;
  }

根据本机环境,编写script.sh脚本文件,根据proto生成pb文件:

# !bin/sh
proto_files=`find ./api/protobuf-spec -name "*.proto"`
for proto_file in ${proto_files[*]}
do
    `protoc -I. \
            -I$GOPATH/pkg/mod/github.com/mwitkow/go-proto-validators@v0.3.2 \
            -I$GOPATH/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.6/third_party/googleapis \
            --govalidators_out=./api/protobuf \
            --go_out=plugins=grpc:./api/protobuf \
            ${proto_file}`
done
echo "success"

在执行script.sh的时候,提示github.com/mwitkow/go-proto-validators/validator.proto: File not found,如下图所示。
image.png

根据错误提示,第一反应就是go-proto-validators下载失败,进入文件目录查看,确实已经存在,排除了这个问题之后就更困惑了。既然存在问啥还提示这个错误呢?根据文件路径找到了validator.proto文件。

image.png

打开"github.com/mwitkow/go-proto-validators/validator.proto"文件,代码如下:

image.png

看到了import "google/protobuf/descriptor.proto";在文件系统中确实没有找见这个文件,查找相关资料找到了对应的项目。

git clone https://github.com/protocolbuffers/protobuf 

将"https://github.com/protocolbuffers/protobuf/" 中的 src/google 文件夹移动到 $GOPATH/src/google/下面,并修改script.sh脚本,重新执行。

# !bin/sh
proto_files=`find ./api/protobuf-spec -name "*.proto"`
for proto_file in ${proto_files[*]}
do
    `protoc -I. \
            -I$GOPATH/src \
            -I$GOPATH/pkg/mod/github.com/mwitkow/go-proto-validators@v0.3.2 \
            -I$GOPATH/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.6/third_party/googleapis \
            --govalidators_out=./api/protobuf \
            --go_out=plugins=grpc:./api/protobuf \
            ${proto_file}`
done
echo "success"

验证结果,如下图所示:github.com/mwitkow/go-proto-validators/validator.proto: File not found问题消失。

image.png

对于go_package是另外一个问题,下一篇做详细介绍。

阅读 333
1 声望
0 粉丝
0 条评论
1 声望
0 粉丝
文章目录
宣传栏