The import path must contain at least one forward slash 斜杠 character.

解決 "The import path must contain at least one forward slash ('/') character."問題

描述

在做grpc server時(shí),發(fā)現(xiàn)按照以前的編譯方式編譯.proto文件

編譯命令為

protoc --go_out=./ a.proto 

報(bào)錯(cuò)

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字段至少包含一個(gè)斜杠,修改proto文件,

syntax = "proto3";
option go_package = "test/a";
.....

再次執(zhí)行,成功,但并不是我想要的,生成的文件外層包了一個(gè)test文件夾.

分析

由于網(wǎng)上的教程大都是19年之前的,加上是老項(xiàng)目的緣故,遂考慮是否是版本的問題。

首先測(cè)試了protoc工具,換了幾個(gè)版本均無效,考慮到編譯pb.go調(diào)用的是protoc-gen-go插件完成,遂覺得測(cè)試protoc-gen-go的版本.

結(jié)果

目前最新的版本是v1.5.2,經(jīng)測(cè)試,2020年4月14日發(fā)布的v1.4.0以上的版本就要求必須加/了。

解決

最簡(jiǎn)單的辦法是做降級(jí),使用包含v1.3.5以下的版本即可

go get github.com/golang/protobuf/protoc-gen-go@v1.1.0

再次執(zhí)行,成功

后續(xù)

建議新項(xiàng)目,在go_package字段按要求增加/.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容