0

我将 proto 文件(validator.proto)从我的一个项目https://github.com/maanasasubrahmanyam-sd/customValidation导入到另一个项目(test.proto)https://github.com/maanasasubrahmanyam-sd/customeValTest/tree /master/interfaces/test_server

go get github.com/maanasasubrahmanyam-sd/customValidation

protoc  \
-I. \
-I $GOPATH/src/ \
--proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 \
--proto_path=${GOPATH}/src/github.com/google/protobuf/src \
--go_out="plugins=grpc:./generated"  \
--validate_out="lang=go:./generated" \
--govalidators_out=. \
./interfaces/test_server/*.proto

正确的导入应该是 github.com/maanasasubrahmanyam-sd/customValidation/validator。但 test.pb.go 导入以_ "./validator"的形式出现,在 Goland 中显示红线。

编辑 - 所有 pb.go 文件都显示错误。我怀疑这是由于进口不良。

我用谷歌搜索但没有找到任何相关信息。有什么建议专家吗?

4

1 回答 1

1

您可以通过两种方式解决原型路径,

一:如果您的导入原始文件在您的本地,那么您应该将其移动到您的父目录,然后从您的父路径中对其进行寻址,如下所示:

- parentDirectory
-- directory1
--- proto1.proto
-- importDirectory
--- proto2.proto

您可以使用以下命令构建此文件(proto1.proto):

protoc --proto_path=parentDirectory/directory1 --proto_path=parentDirectory --go-grpc_out=***your output path*** --go_out=***your output path*** parentDirectory/directory1/proto1.proto

  • 此外,如果您使用Goland,您需要将 parentDirectory 添加到您的设置(文件 | 设置 | 语言和框架 | 协议缓冲区),然后取消选中自动配置并添加您的父路径。

二:如果您的 proto 文件在 URL: 中,那么您可以将其添加到您的构建命令中,如下所示:

protoc --proto_path=src \
  --go_opt=Mprotos/buzz.proto=example.com/project/protos/fizz \
  --go_opt=Mprotos/bar.proto=example.com/project/protos/foo \
  protos/buzz.proto protos/bar.proto
于 2021-08-26T17:51:10.777 回答