go krotos,proto文件引用自定义proto(例如validate.proto)

本文介绍了在Goland中使用ProtoBuf时遇到的自定义proto引用问题,以及解决该问题的步骤,包括安装Protobuf插件,配置项目路径,和处理缺失proto文件的方法。通过这些步骤,成功生成了kratos项目的pb.go文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、proto文件中引用自定义proto(例如validate.proto)
helloworld.proto中引用validate.proto(Goland中,此时"validate/validate.proto"会显示红色),对http请求的入参做校验

syntax = "proto3";

package api.helloworld.v1;

import "google/api/annotations.proto";
import "validate/validate.proto";

option go_package = "kratosDemo/api/helloworld/v1;v1";
option java_multiple_files = true;
option java_package = "api.helloworld.v1";

service Helloworld {
	rpc CreateHelloworld (CreateHelloworldRequest) returns (CreateHelloworldReply){
		option (google.api.http) = {
			get: "/hw/{name}"
		};
	};
}

message CreateHelloworldRequest {
	string name = 1[(validate.rules).string = {min_len: 5, max_len: 100}];
}
message CreateHelloworldReply {
	string message=1;
}

2、kratos proto client api/helloworld/v1/helloworld.proto(生成相关pb.go文件)
此时,出现如下错误,无法定位自定义proto文件

xxx@xxx:~/go/src/kratosDemo$ kratos proto client api/helloworld/v1/helloworld.proto
google/protobuf/duration.proto: File not found.
google/protobuf/timestamp.proto: File not found.
validate/validate.proto:8:1: Import "google/protobuf/duration.proto" was not found or had errors.
validate/validate.proto:9:1: Import "google/protobuf/timestamp.proto" was not found or had errors.

解决方案:
1.File | Settings | Plugins,添加Protobuf组件,OK-Apply
2.File | Settings | Languages & Frameworks | Protobuf,添加当前项目的third_party目录,OK-Apply

3、重新使用kratos proto client api/helloworld/v1/helloworld.proto命令生成相关pb.go文件,1中import自定义proto的红色提示也会消失

注意:缺失的proto文件,需用户自行编写或下载,存放在krotos项目的third_party目录(框架定义的第三方proto存放路径)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值