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

我不是女神ヾ 2023-01-19 13:51 96阅读 0赞

The import path must contain at least one forward slash (’/’) character.

问题背景:
编译.proto文件报错:
The import path must contain at least one forward slash (’/’) character.

编译命令为

  1. protoc --go_out=./ a.proto

a.proto文件内容如下

  1. syntax = "proto3";
  2. option go_package = "a";
  3. message TestRequest{
  4. int64 age = 1;
  5. string name = 2;
  6. }
  7. message TestResponse{
  8. int64 code = 1;
  9. string msg = 2;
  10. }
  11. service A {
  12. rpc Test(TestRequest) returns(TestResponse){}
  13. }

按提示,要求package字段至少包含一个斜杠,修改proto文件,

  1. syntax = "proto3";
  2. option go_package = "test/a";
  3. .....

再次执行,成功,但并不是我想要的,生成的文件外层包了一个test文件夹.

分析
由于网上的教程大都是19年之前的,加上是老项目的缘故,遂考虑是否是版本的问题。

首先测试了protoc工具,换了几个版本均无效,考虑到编译pb.go调用的是protoc-gen-go插件完成,遂觉得测试protoc-gen-go的版本.

结果
目前最新的版本是v1.5.2,经测试,2020年4月14日发布的v1.4.0以上的版本就要求必须加/了。

解决
最简单的办法是做降级,使用包含v1.3.5以下的版本即可

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

再次执行,成功

后续

建议新项目,在go_package字段按要求增加/.

发表评论

表情:
评论列表 (有 0 条评论,96人围观)

还没有评论,来说两句吧...

相关阅读