Golang GRPC 环境 问题
生成文件 执行
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative service.proto
报下列错处理方法
1.'protoc-gen-go' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
a.检查gopath目录(%GOPATH%\)的bin文件夹,是否有protoc-gen-go.exe,protoc-gen-go-grpc.exe
protoc-gen-go.exe
protoc-gen-go-grpc.exe
b.如果没有 protoc-gen-go-grpc.exe
执行:go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
c.如果有将刚才找到的2个exe文件,复制到goroot(%GOROOT%\)的bin目录下
2.protoc-gen-go: unable to determine Go import path for "services.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
See https://protobuf.dev/reference/go/go-generated#package for more information.
在相应的.proto文件中添加
option go_package = "./;pb"
关于VScode proto 3 插件的配置文件
"protoc": { "path": "D:/grpc/bin", "compile_on_save": false, "options": [ "--proto_path=protos/v3", "--proto_path=protos/v2", "--proto_path=${workspaceRoot}/proto", "--proto_path=${env.GOPATH}/src", "--java_out=gen/java" ] }
3. 当引用包路径由GOPATH变成GOROOT 包出错时
原因是引入包应该去GOPATH查找,但是却去GOROOT目录下查找,出现了混淆。
解决方案:
go env -w GO111MODULE=off