猿问

如何正确导入 protobuf 的文件?

内部city.proto文件我想使用(导入)protobuf 的.proto文件。在我的 golang 应用程序中,我使用 go 模块。


city.proto:


syntax = "proto3";


package proto;


import "google/protobuf/timestamp.proto";


option go_package = "./proto";


message City {

    google.protobuf.Timestamp create_at = 1;

}

当我尝试从city.proto文件生成代码时,它会引发这样的错误:


google/protobuf/timestamp.proto: File not found.

city.proto:3:1: Import "google/protobuf/timestamp.proto" was not found or had errors.

city.proto:25:5: "google.protobuf.Timestamp" is not defined.

我在我的 gRPC 项目目录中创建了一个proto文件夹。该city.proto文件位于此文件夹中。我运行这样的命令:


protoc -I proto/ proto/city.proto --go_out=plugins=grpc:proto/city.

此命令仅在我不在 proto 文件中使用 import 的情况下有效。


去版本:


go version go1.12.9 windows/amd64

协议--版本:


libprotoc 3.11.4

回声 %GOPATH%:


C:\Users\NNogerbek\go

在该目录中,我看到三个具有这种结构的文件夹:


bin

    protoc.exe

    protoc-gen-go.exe

pkg

    mod

        **packages**

src

    google.com

        protobuf

            timestamp.proto

我运行这样的命令:


go list -f "{{ .Path }} {{ .Dir }}" -m github.com/golang/protobuf

命令结果:


github.com/golang/protobuf C:\Users\NNogerbek\go\pkg\mod\github.com\golang\protobuf@v1.4.0



Qyouu
浏览 277回答 1
1回答

交互式爱情

经过多次尝试,我找到了一种方法,可以使用以下命令将 go 代码生成到我的 gRPC 服务器而不会出错:protoc -I. -I%GOPATH%/src --gogofaster_out=plugins=grpc:. proto/city.proto正如您在命令中看到的那样,我指定了srcprotobuf 文件所在文件夹的路径。我还使用了gogoprotobuf包gogofaster的插件。
随时随地看视频慕课网APP

相关分类

Go
我要回答