protobuf使用import導入包找不到
前言
使用protobuf
生成go代碼,發現protobuf
中一個import引用找不到
protobuf代碼
syntax = "proto3";
package main;
import "github.com/mwitkow/go-proto-validators/validator.proto";
message Message {
string important_string = 1 [
(validator.field) = {regex: "^[a-z]{2,5}$"}
];
int32 age = 2 [
(validator.field) = {int_gt: 0, int_lt: 100}
];
}
生成的時候報錯
$ protoc --govalidators_out=. --go_out=plugins=grpc:. hello.proto
github.com/mwitkow/go-proto-validators/validator.proto: File not found.
hello.proto:5:1: Import "github.com/mwitkow/go-proto-validators/validator.proto" was not found or had errors.
解決方案
我們要弄明白protoc中proto_path
參數的含義
- proto_path: 指定了在哪個目錄中搜索import中導入的和要編譯為.go的proto文件,可以定義多個
所以添加proto_path就可以了,指定兩個地址,一個是import的地址,一個是要編譯為.go的proto文件的地址
$ protoc --proto_path=. --proto_path=${GOPATH}/src --govalidators_out=. --go_out=plugins=grpc:. hello.proto