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

使用envoy proxy validator与gogo protobuf生成Go校验文件报错如何解决

protoc命令执行报错解决方案

第一次报错(command not found)原因

  • 多行shell命令续行要求每一行末尾必须加英文半角反斜杠\,且反斜杠后不能存在任何空白字符(空格、制表符等)。你最初的命令里protoc-gen-validate@v0.1.0所在行末尾未加续行符,--validate_out行的反斜杠被中文引号包裹导致失效,shell将下一行的参数识别为独立命令,触发报错。

第二次报错(Unknown flag: -?)原因

  • 调整后的命令多处使用了全角破折号—-,而非protoc要求的英文半角双短横--,比如-—go_out、—-validate_out的前缀均为全角字符,shell无法识别为参数前缀,触发未知标志报错。
  • 命令中混用了HTML转义引号"、中文弯引号“,不符合shell语法要求。

修正后的可用命令

首先提前创建输出目录:

mkdir -p ./generated

再执行protoc命令:

protoc  \
--proto_path=${GOPATH}/src \
--proto_path=${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2 \
--proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 \
--proto_path=. \
--gogo_out=. \
--go_out=./generated \
--validate_out="lang=go:./generated" \
--govalidators_out=gogoimport=true:. \
proto/test.proto

额外校验项

  • 确认protoc-gen-gogo、protoc-gen-validate、protoc-gen-govalidators三个插件已安装,且二进制文件所在目录已加入$PATH环境变量。
  • 确认所有续行用的\后无多余空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:27:01