我一直在使用protoc来生成golang gRPC客户端和服务器代码,而没有任何问题。由于我有多个使用相同数据类型的gRPC服务,因此我想针对这些类型引用base.proto而不是复制和粘贴,这是额外的工作,可能会导致不同步的问题。
这是base.proto的示例:
syntax = "proto3";
package base;
message Empty {
}
message Label {
string Key = 1;
string Value = 2;
}
以下是特定于.proto的示例:
syntax = "proto3";
import = "base.proto";
package publisher;
service ClientPublisher {
rpc Publish(stream base.Label) returns (base.Empty) {}
}
这是我的命令:
protoc -I system-client-go/ system-client-go/client/publisher.proto --go_out=plugins=grpc:system-client-go --proto_path=system-client-go/
无论我尝试什么,它都会抛出此错误:
2019/08/01 15:31:31 protoc-gen-go:错误:错误生成了源代码:273:7:预期的类型,找到了'。' (还有10个错误) 对应于以下行: rpc Publish(stream base.Label)返回(base.Empty){}
有什么想法吗?
答案 0 :(得分:0)
这种错误通常是因为您的相对路径错误。尝试将特定的原始文件放在目录中,然后像导入
import "exampleproject/specific.proto";
如果两个文件都在同一目录中,则此线程中说明了解决方法=> https://github.com/golang/protobuf/issues/322
基本上,golang每个目录只允许一个软件包。因此,protoc-gen-go正在将它们视为2个独立的库。
希望有帮助!