我有两项服务:故事和标签。文件的结构如下:
Story
|-- StoryService
| `-- proto
| `-- storyservice.proto
`-- TagService
`-- proto
`-- tagservice.proto
.proto
文件中的每个文件都需要使用另一个文件中的消息。如何将它们彼此导入?
我尝试了import "StoryService/proto/storyservice.proto"
,但是没有用。
答案 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.将所有共享的定义变成您拥有的两个原型之一,这样一个就可以导入另一个。