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

本文介绍了解决Go语言中.proto文件编译时出现的路径格式错误问题,通过调整go_package选项并适配不同版本的protoc-gen-go插件来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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字段按要求增加/.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值