mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别

在写proto文件生成pb文件脚本的时候,提示github.com/mwitkow/go-proto-validators/validator.proto: File not found。为了能够更清楚了解场景,先介绍一下项目文件目录,如下图所示。
mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别_第1张图片

下面选择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/[email protected] \
            -I$GOPATH/pkg/mod/github.com/grpc-ecosystem/[email protected]/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,如下图所示。
mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别_第2张图片

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

image.png

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

mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别_第3张图片

看到了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/[email protected] \
            -I$GOPATH/pkg/mod/github.com/grpc-ecosystem/[email protected]/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问题消失。

mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别_第4张图片

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

你可能感兴趣的:(mac golang:go-proto-validators/validator.proto 文件在GoLand中不识别)