You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成返回自定义Proto对象的Golang gRPC客户端遇protoc命令错误

解决protoc组合plugins=grpc和M映射参数时的路径错误问题

看起来你踩了一个protoc命令参数格式的小坑——单独用plugins=grpc或者M路径映射都能正常执行,但把两者组合起来就触发了"No such file or directory"错误,这其实是参数格式的问题导致的。

问题根源

你出错的命令里,错误地用冒号分隔了plugins=grpc和M映射参数:

protoc -I.:../ --go_out=plugins=grpc:Muser/messages.proto=github.com/.../.../user:. messages.proto

protoc会把冒号后面的Muser/messages.proto=github.com/.../.../user当成输出路径的一部分,而不是参数选项,自然找不到这个不存在的"目录"。

正确的命令格式

当需要同时指定plugins=grpc和M路径映射时,这两个选项要用逗号分隔,然后再用冒号连接输出目录。修正后的命令如下:

protoc -I.:../ --go_out=plugins=grpc,Muser/messages.proto=github.com/.../.../user:. messages.proto

为什么单独的命令能正常运行?

  • 单独使用--go_out=Muser/messages.proto=github.com/.../.../user:.时,冒号前是唯一的M映射参数,冒号后是输出目录,格式符合protoc的要求
  • 单独使用--go_out=plugins=grpc:.时,冒号前是plugins参数,冒号后是输出目录,格式也正确

额外验证点

执行命令前可以再确认:

  • -I指定的两个包含路径(.和../)下确实存在user/messages.proto文件
  • github.com/.../.../user是你Go项目的实际模块路径,和go.mod里的声明一致

内容的提问来源于stack exchange,提问作者user3276768

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:21:57