为了账号安全,请及时绑定邮箱和手机立即绑定

protoc-gen-go:无法确定“simple.proto”的 Go 导入路径

protoc-gen-go:无法确定“simple.proto”的 Go 导入路径

Go
慕虎7371278 2022-10-24 15:06:01
我有以下内容的简单原型文件。syntax="proto3";package main;message Person {      string name = 1;      int32 age = 2; }我正在尝试使用 protoc 为其生成 go 代码。我跑:protoc --go_out=. simple.proto我收到以下错误:protoc-gen-go: unable to determine Go import path for "simple.proto"Please specify either:        • a "go_package" option in the .proto source file, or        • a "M" argument on the command line.main.go,go.mod并且simple.proto在同一个文件夹中。两者protoc和protoc-gen-go都在 PATH 环境中定义。
查看完整描述

5 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您忘记通过添加以下内容将文件与它链接列表:

option go_package = "./";

您需要先对其进行链表以使其工作。这是同样的问题


查看完整回答
反对 回复 2022-10-24
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

你不见了option go_package.

您将提供option go_package的名称将是由 protoc 生成的包的名称。通过这样做,您可以导入从而访问消息字段。


查看完整回答
反对 回复 2022-10-24
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

protoc要求指定包,那么解决方法就是添加


option go_package = "./your-package-name";

使您的文件如下所示:


syntax="proto3";


package main;


option go_package = "./your-package-name";


message Person {

      string name = 1;

      int32 age = 2; 

}

然后您可以运行命令,例如:


protoc -I src/ --go_out=src/ src/simple/simple.proto

where--go_out=src/指定生成文件的位置,然后指定原始文件的相对路径。


注意:不要忘记在前面加上option go_packagewith./


查看完整回答
反对 回复 2022-10-24
?
森林海

TA贡献2011条经验 获得超2个赞

我有一个类似的问题。

我认为协议缓冲区应该是语言中立的。如果我们将 go_package 添加到 proto 文件中,那么如果我们尝试将这些 proto 文件编译为不同的语言,我们将不得不对文件进行更改。

如果您只考虑生成 go 文件,我看到的解决方案是有效的。


查看完整回答
反对 回复 2022-10-24
?
开满天机

TA贡献1786条经验 获得超13个赞

首先确保您正确安装了编译器


sudo apt install protobuf-compiler

sudo apt install golang-goprotobuf-dev

使用这个命令


protoc -I=src/ --go_out=src/ src/simple.proto

-I = IPATH -指定搜索导入的

目录--go_out=输出目录


查看完整回答
反对 回复 2022-10-24
  • 5 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信