使用Protobuf与Go开发微服务时protoc-gen-go插件执行失败求助
protoc-gen-go 找不到的排查与解决方法
以下是针对你遇到的问题的具体排查步骤和解决办法:
验证PATH配置是否生效
执行echo $PATH,查看输出里是否包含$(go env GOPATH)/bin的实际路径。如果没看到,说明你的.zshrc配置没加载,执行source ~/.zshrc重新加载配置,或者重启终端。注意如果用的是bash,要检查.bashrc或.bash_profile文件,而非.zshrc。检查插件的可执行权限
先定位插件位置:$(go env GOPATH)/bin/protoc-gen-go,执行ls -l $(go env GOPATH)/bin/protoc-gen-go查看权限。如果权限列没有x(可执行标识),执行chmod +x $(go env GOPATH)/bin/protoc-gen-go给插件添加可执行权限。对protoc-gen-go-grpc插件也做同样检查。重新安装插件
可能插件文件损坏,执行以下命令重新安装两个插件:go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest确认Go环境变量正确性
执行go env查看输出,确认GOPATH和GOBIN的路径是否正确。如果GOPATH为空,手动设置默认路径:export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin用绝对路径指定插件(终极方案)
如果以上方法都无效,直接在protoc命令里明确指定插件的绝对路径:protoc --go_out=. --go-grpc_out=. \ --plugin=protoc-gen-go=$(go env GOPATH)/bin/protoc-gen-go \ --plugin=protoc-gen-go-grpc=$(go env GOPATH)/bin/protoc-gen-go-grpc \ UserService.proto
内容的提问来源于stack exchange,提问作者Cross
相关产品推荐
相关产品推荐

