错误打印:
2022/09/07 17:23:31 ERROR: [profiling] error parsing flags: when -address isn't specified, you must include -stream-stats-catapult-json
--go_out: protoc-gen-go: Plugin failed with status code 1.
今天利用protoc 编译proto 生成.go 文件,突然报错了,以下是查找的原因的具体过程
- 是否是go 版本升级的原因
我第一反应可能是因为我升级go 到1.19 版本的缘故,然后我把 protoc ,protoc-gen-go 和 protoc-gen-go-grpc都升级到最新版本,可是依旧报错
- 通过protoc-gen-go 和 protoc-gen-go-grpc 项目源码查找原因
- protoc-gen-go 源码路径
https://github.com/protocolbuffers/protobuf-go
- protoc-gen-go-grpc
https://github.com/grpc/grpc-go
通过查找源码中的报错信息,确定报错是在protoc-gen-go-grpc中打印出来的,于是,添加打印,替换protoc-gen-go-grpc.exe
于是乎诡异的一幕出现了,打印竟然没有执行,最后我把protoc-gen-go-grpc.exe删了,依然能够打印,至此我怀疑是是否有其它protoc-gen-go-grpc.exe 或者 系统缓存的原因。
- 删除所有的protoc-gen-go-grpc.exe,清除系统缓存,重启电脑,但是报错依旧出现
- 把protoc 编译需要的几个exe换了个目录
这时居然可以了,原来原先的protoc.exe 目录下有个cmd.exe,这个命令会影响系统的cmd命令,而且这个cmd.exe 恰恰是protoc-gen-go-grpc 项目编译出来的

至此bug出现的原因也找到了
博客作者在升级go到1.19版本后,遇到protoc编译proto文件时的错误。错误信息指向protoc-gen-go-grpc,作者检查源码并尝试清除系统缓存,但问题依旧。最终发现是protoc目录下的cmd.exe影响了系统cmd,导致问题发生。解决方法是移除该cmd.exe,将编译工具移到新目录。

1747

被折叠的 条评论
为什么被折叠?



