首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解决protoc gen- Go :无法通过添加"M“参数来确定Go导入路径问题

解决protoc gen- Go :无法通过添加"M“参数来确定Go导入路径问题
EN

Stack Overflow用户
提问于 2022-05-04 04:27:26
回答 2查看 1.7K关注 0票数 4

protoc-gen-go: unable to determine Go import path for "simple.proto"相同的症状

用于具有以下内容的简单proto文件。

syntax="proto3";包main;message Person { string name = 1;int32 age = 2;}

我正在尝试使用protoc为它生成go代码。我跑:

原型-go_opt=path=source_relative --go-grpc_out=。-grpc_opt=path=源相对simple.proto

我收到以下错误:

protoc:无法确定"simple.proto“的Go导入路径,请在.proto源文件中指定:·a "go_package”选项,或者在命令行中指定·a "M“参数。

所有答案都集中在第一个选项上--添加a "go_package" option in the .proto source file,但我正在寻找第二个选项"__a“"M”参数在命令行中的答案。

https://stackoverflow.com/a/62540631/2125837下的注释相同

我正在寻找通过protoc更改模块路径的方法,为作为不同模块一部分的客户端和服务器生成Go代码,我尝试使用go_opt=module,但它不适用于source_relative

通过在命令行中添加一个"M“参数,而不是在go_package源文件中添加一个”.proto“选项,有什么方法可以让它工作吗?

具体来说,对于https://github.com/mmcc007/go/blob/master/examples/helloworld/helloworld/helloworld.proto的文件

以下是我失败的尝试:

代码语言:javascript
运行
复制
$ protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --proto_path=examples/helloworld/helloworld helloworld.proto 

protoc-gen-go: unable to determine Go import path for "helloworld.proto"
. . .
--go_out: protoc-gen-go: Plugin failed with status code 1.


$ protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --proto_path=examples/helloworld/helloworld --go_opt=Mhelloworld.proto=github.com/mmcc007/go/blob/master/examples/helloworld/helloworld helloworld.proto 

protoc-gen-go-grpc: unable to determine Go import path for "helloworld.proto"
. . .
--go_out: protoc-gen-go: Plugin failed with status code 1.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-27 15:27:34

我发现使用--proto_path可以方便地使用“M标志”:-)

代码语言:javascript
运行
复制
protoc --proto_path=./proto \
  --go_out=./go \
  --go_opt=Mhelloworld.proto=example.com/project/protos/fizz \
  ./proto/helloworld.proto

注: helloworld.proto之前的M

票数 4
EN

Stack Overflow用户

发布于 2022-11-04 06:30:08

您需要在命令或proto文件中添加路径。

代码语言:javascript
运行
复制
syntax = "proto3";

option go_package = "pkg/api";

java和python也是如此。

代码语言:javascript
运行
复制
option java_package = "pkg/api";
option py_generic_services = "pkg/api";

至于命令

Makefile

代码语言:javascript
运行
复制
PROJ_PATH=${CURDIR}

.PHONY: proto
proto: ## Generate protobuf code
# Compile proto files inside the project.
    protoc api.proto --proto_path=${PROJ_PATH}/proto --go_out=. --go-grpc_out=.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72107940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档