【问题标题】:Go proto: File not found转到原型:找不到文件
【发布时间】:2021-08-18 18:52:47
【问题描述】:

我一直在尝试在命令下运行

protoc   -I ./interfaces/  -I ${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 -I ${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2 -I ${GOPATH}pkg/mod/github.com/x --gogo_out=. --go_out="plugins=grpc:./generated"   --validate_out="lang=go:./generated" ./interfaces/test_server/*.proto

遇到错误

github.com/x/customValidation/validators.proto:找不到文件。 test_server/test.proto:5:1:未找到导入“github.com/x/customValidation/validators.proto”或有错误。

我可以看到 proto 文件在这个位置 -> github.com/x/customValidation/validators.proto 并在本地保存在 -> pkg\mod\github.com\x\custom!validation@v0.0.0-20210817213416-5eb0b8804c6f

我也尝试过使用 --proto_path 命令,但仍然收到与未找到 proto 文件相同的错误

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

【问题讨论】:

  • 要编译的protobufs(即./interfaces/test_server/*.proto)也必须出现在proto_paths之一中。我认为您可能也需要使用绝对路径,即${PWD}/interfaces 而不是./interfaces。所以,你会想要... --proto_path=${PWD}/interfaces/test_server ... ${PWD}/interfaces/test_server/*.proto
  • 这能回答你的问题吗? protoc: Go package has inconsistent package names

标签: go protocol-buffers proto grpc-go


【解决方案1】:

这感觉像是路径的问题。该路径必须相对于您正在执行的位置或绝对路径准确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多