从其他包导入原始文件

时间:2019-03-10 06:21:32

标签: grpc protoc

我有两项服务:故事和标签。文件的结构如下:

Story
|-- StoryService
|   `-- proto
|       `-- storyservice.proto
`-- TagService
    `-- proto
        `-- tagservice.proto

.proto文件中的每个文件都需要使用另一个文件中的消息。如何将它们彼此导入? 我尝试了import "StoryService/proto/storyservice.proto",但是没有用。

2 个答案:

答案 0 :(得分:0)

如果使用protoc,则所有导入指令的搜索路径应相对于-I--proto_path)参数中列出的文件夹之一。例如。如果您运行protoc -I/path/to/Story --go_out=out StoryService/proto/storyservice.proto,它将能够导入TagService/proto/tagservice.proto(因为其路径相对于Story中列出的-I文件夹)。

话虽如此,您实际上并不需要使每个原型文件都导入另一个文件。递归原始文件导入将无法处理与此错误消息类似的错误消息:

a.proto: File recursively imports itself: a.proto -> b.proto -> a.proto

答案 1 :(得分:0)

您不能相互导入两个原始文件。 针对您的方案有两种解决方案。 1.具有包含所有共享定义的第三个原型文件。 2.将所有共享的定义变成您拥有的两个原型之一,这样一个就可以导入另一个。