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

 

 

 

posted @ 2024-05-30 23:08  酒沉吟  阅读(183)  评论(0编辑  收藏  举报