标签:protoc 版本 package proto character least 斜杠 go
The import path must contain at least one forward slash (’/’) character.
问题背景:
编译.proto文件报错:
The import path must contain at least one forward slash (’/’) character.
编译命令为
protoc --go_out=./ a.proto
a.proto文件内容如下
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){}
}
按提示,要求package字段至少包含一个斜杠,修改proto文件,
syntax = "proto3";
option go_package = "test/a";
.....
再次执行,成功,但并不是我想要的,生成的文件外层包了一个test文件夹.
分析
由于网上的教程大都是19年之前的,加上是老项目的缘故,遂考虑是否是版本的问题。
首先测试了protoc工具,换了几个版本均无效,考虑到编译pb.go调用的是protoc-gen-go插件完成,遂觉得测试protoc-gen-go的版本.
结果
目前最新的版本是v1.5.2,经测试,2020年4月14日发布的v1.4.0以上的版本就要求必须加/了。
解决
最简单的办法是做降级,使用包含v1.3.5以下的版本即可
go get github.com/golang/protobuf/protoc-gen-go@v1.1.0
再次执行,成功
后续
建议新项目,在go_package字段按要求增加/.
标签:protoc,版本,package,proto,character,least,斜杠,go 来源: https://blog.csdn.net/inthat/article/details/116605214
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。