不知道如何做进口在proto,一些帮助很大的赞赏。
文件结构:
- item.proto我试图将proto/item.proto导入到proto/api/item.proto中
proto/api/item.proto
syntax = "proto2";
import "item.proto"
service ItemService {
rpc ListItems(ListItemsRequest) returns (ListItemsResponse);
}
message ListItemsRequest {
//Empty message
}
message ListItemsResponse {
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
json_schema: {
required:["items"]
}
};
repeated .item.Item wallets = 1;
}生成线:
protoc \
--proto_path=proto/ \
--proto_path=third_party/grpc-gateway/third_party/googleapis \
--proto_path=third_party/grpc-gateway \
--include_source_info \
--include_imports \
--descriptor_set_out="$DESCRIPTOR_OUT" \
--cpp_out="$CPP_OUT" \
--grpc_out="$CPP_OUT" \
--plugin=protoc-gen-grpc=`which grpc_cpp_plugin` \
proto/api/item.proto吐出错误:
api/item.proto:57:12: ".item.Item" is not defined.发布于 2021-09-07 11:36:54
我假设您没有向proto/item.proto文件中添加包说明符。见这和这。如果在导入的文件中指定了包,则不应该出现错误:
syntax = "proto2";
package item;
message Item {}您还不能将包说明符添加到导入的文件中,并将包从消息名(在proto/api/item.proto中)中删除:
message ListItemsResponse {
repeated .Item wallets = 1;
}另外,protobuf文档建议您始终导入相对于项目根的文件。我假设这种方法可以帮助保持项目的可管理性,我找不到任何技术上的理由来推荐这个方法。就像这样:
proto/api/item.proto
syntax = "proto2";
package api.item;
import "proto/item.proto";
...并与
protoc \
--proto_path=. \
... \
proto/api/item.protohttps://stackoverflow.com/questions/69085334
复制相似问题