解決 "The import path must contain at least one forward slash ('/') character."問題
描述
在做grpc server
時,發(fā)現(xiàn)按照以前的編譯方式編譯.proto
文件
編譯命令為
protoc --go_out=./ a.proto
報錯
The import path must contain at least one forward slash ('/') character.
a.proto
文件內(nèi)容如下
syntax = "proto3";
option go_package = "a";
message TestRequest{
int64 age = 1;
string name = 2;
}
message TestResponse{
int64 code = 1;
string msg = 2;
}
service A {
rpc Test(TestRequest) returns(TestResponse){}
}
面向搜索引擎編程了半天,沒有發(fā)現(xiàn)相關(guān)問題的帖子.
按提示,要求package
字段至少包含一個斜杠,修改proto
文件,
syntax = "proto3";
option go_package = "test/a";
.....
再次執(zhí)行,成功,但并不是我想要的,生成的文件外層包了一個test
文件夾.
分析
由于網(wǎng)上的教程大都是19年之前的,加上是老項目的緣故,遂考慮是否是版本的問題县好。
首先測試了protoc
工具,換了幾個版本均無效,考慮到編譯pb.go
調(diào)用的是protoc-gen-go
插件完成,遂覺得測試protoc-gen-go
的版本.
結(jié)果
目前最新的版本是v1.5.2
,經(jīng)測試,2020年4月14日發(fā)布的v1.4.0
以上的版本就要求必須加/
了。
解決
最簡單的辦法是做降級,使用包含v1.3.5
以下的版本即可
go get github.com/golang/protobuf/protoc-gen-go@v1.1.0
再次執(zhí)行,成功
后續(xù)
建議新項目,在go_package
字段按要求增加/
.