Grpc Go Generated.pb.go 导入未格式化

Grpc Go Generated.pb.go import was not formatted

我从我的一个项目 https://github.com/maanasasubrahmanyam-sd/customValidation to another project (test.proto) https://github.com/maanasasubrahmanyam-sd/customeValTest/tree/master/interfaces/test_server

中导入了原型文件 (validator.proto)
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 文件都显示错误。我怀疑这是由于导入错误造成的。

我google它但是没有找到任何相关信息。有专家建议吗?

您可以通过两种方式寻址原型路径,

一: 如果您的导入原型文件在您的本地,那么您应该将它移动到您的父目录,然后从您的父路径解决它,如下所示:

- 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 添加到您的设置(文件 | 设置 | 语言和框架 | Protocol Buffers),然后取消选中自动配置并添加您的父路径。

二:如果你的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