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

我有以下内容的简单原型文件。


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 环境中定义。


慕虎7371278
浏览 243回答 5
5回答

哈士奇WWW

您忘记通过添加以下内容将文件与它链接列表:option go_package = "./";您需要先对其进行链表以使其工作。这是同样的问题

人到中年有点甜

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

拉莫斯之舞

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.protowhere--go_out=src/指定生成文件的位置,然后指定原始文件的相对路径。注意:不要忘记在前面加上option go_packagewith./

森林海

我有一个类似的问题。我认为协议缓冲区应该是语言中立的。如果我们将 go_package 添加到 proto 文件中,那么如果我们尝试将这些 proto 文件编译为不同的语言,我们将不得不对文件进行更改。如果您只考虑生成 go 文件,我看到的解决方案是有效的。

开满天机

首先确保您正确安装了编译器sudo apt install protobuf-compilersudo apt install golang-goprotobuf-dev使用这个命令protoc -I=src/ --go_out=src/ src/simple.proto-I = IPATH -指定搜索导入的目录--go_out=输出目录
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go