乐趣区

关于golang:mac-golanggoprotovalidatorsvalidatorproto-文件在GoLand中不识别

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

上面抉择 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,如下图所示。

依据谬误提醒,第一反馈就是 go-proto-validators 下载失败,进入文件目录查看,的确曾经存在,排除了这个问题之后就更困惑了。既然存在问啥还提醒这个谬误呢?依据文件门路找到了 validator.proto 文件。

关上 ”github.com/mwitkow/go-proto-validators/validator.proto” 文件,代码如下:

看到了 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 问题隐没。

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

退出移动版