找回密码
 立即注册
查看: 442|回复: 0

一篇博文搞定goctl:V1.3.0新版本解决goctl rpc protoc的问题

[复制链接]
发表于 2022-2-14 07:17 | 显示全部楼层 |阅读模式
goctl1.3.0新命令goctl rpc protoc问题

一、官网相关描述文献地址:

准备工作  https://go-zero.dev/cn/prepare.html

protoc & protoc-gen-go安装  https://go-zero.dev/cn/protoc-install.html

rpc命令   https://go-zero.dev/cn/goctl-rpc.html

【说明】:有需要查看相关内容请搜索  推荐使用 和goctl rpc protoc greet.proto --go_out=. --go-grpc_out=. --zrpc_out=.

微服务    https://go-zero.dev/cn/micro-service.html

【说明】:有需要查看相关内容请搜索  旧版本的 protoc-gen-go 不支持 --go-grpc_out

官方仓库针对protoc说明 https://github.com/zeromicro/go-zero/issues/1226

其他

二、相同版本环境:

需要安装如下版本软件:

go环境版本(推荐1.16+), 验证安装结果 如下

go version

//结果:

go version go1.15.1 darwin/amd64

//我的电脑结果:

go version go1.17.5 windows/amd64

安装过程看官网

go mod开启go env GO111MODULE

goenvGO111MODULE

//结果:

on

goctl版本1.3.0

goctl -v

goctl version 1.3.0-20220201 windows/amd64

protoc版本3.19.4(找不到官网小版本)

下载页面

https://github.com/protocolbuffers/protobuf/releases

window当前版本下载地址:

https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protoc-3.19.4-win64.zip

其他

第一种方式:goctl rpc proto命令生成rpc代码(这种方式未来确定会废弃)

需要安装如下版本软件:

1.protoc-gen-go(使用v1.3.2), 验证安装结果 如下

//1.16+版本使用go install

goinstallgithub.com/golang/protobuf/protoc-gen-go@v1.3.2

goget-ugithub.com/golang/protobuf/protoc-gen-go@v1.3.2

验证结果:

user.proto文件内容如下:

syntax="proto3";

packageuser;

// protoc-gen-go 版本大于1.4.0, proto文件需要加上go_package,否则无法生成

optiongo_package="./userClient";

messageIdRequest{

stringid=1;

}

messageUserResponse{

// 用户id

stringid=1;

// 用户名称

stringname=2;

// 用户性别

stringgender=3;

}

serviceUser{

rpcgetUser(IdRequest)returns(UserResponse);

}

user.proto目录文件夹执行如下命令:

goctl rpc proto-srcuser.proto-dir./protoDemo1

//结果

D:\Tools\Go\Code\src\go-zero-demo\mall\user\rpc>goctl rpc proto-srcuser.proto-dir./protoDemo1

deprecated: use"goctl rpc protoc"instead,forthe details see"goctl rpc protoc --help"

protoc--proto_path=D:\Tools\Go\Code\src\go-zero-demo\mall\user\rpc user.proto--go_out=plugins=grpc:D:\Tools\Go\Code\src\go-zero-demo\mall\user\rpc\protoDemo1--go_opt=Muser.proto=.././userClient

Done.

所有的代码会在./protoDemo1目录下面生成

其他

第二种方式:goctl rpc protoc命令生成rpc代码(未来版本会使用这种方式)

需要安装如下版本软件:

protoc-gen-go(使用v1.26版本), 验证安装结果 如下

//1.16+版本使用go install

goinstallgoogle.golang.org/protobuf/cmd/protoc-gen-go@v1.26

goget-ugoogle.golang.org/protobuf/cmd/protoc-gen-go@v1.26

protoc-gen-go-grpc(使用v1.1版本)

【说明】当前官方文档并没有介绍这种方式安装,默认第一种方案安装

//1.16+版本使用go install

goinstallgoogle.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1

goget-ugoogle.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.

【错误提醒】如果没有安装protoc-gen-go-grpc,你输入

goctlrpcprotocuser.proto--go_out=./protoDemo2--go-grpc_out=./protoDemo2--zrpc_out=./protoDemo2

会出现如下报错:

D:\Tools\Go\Code\src\go-zero-demo\mall\user\rpc>goctlrpcprotocuser.proto--go_out=./protoDemo2--go-grpc_out=./protoDemo2--zrpc_out=./protoDemo2

protocuser.proto--go_out=./protoDemo2--go-grpc_out=./protoDemo2

?[31mgoctl:generationerror:'protoc-gen-go-grpc'е

--go-grpc_out:protoc-gen-go-grpc:Pluginfailedwithstatuscode1.

goctlversion:1.3.0-20220201windows/amd64

?[0m

验证结果:

user.proto文件内容同第一种方式一样:

user.proto目录文件夹执行如下命令:

goctl rpc protoc user.proto--go_out=./protoDemo2--go-grpc_out=./protoDemo2--zrpc_out=./protoDemo2

所有的代码会在./protoDemo2目录下面生成

其他

goctl rpc protoc --help命令讲解:

--go_out参数和--go-grpc_out必须保持一致,这是protoc-gen-go-grpc的命令;

--zrpc_out参数就是第一种方式的src参数

D:\Tools\Go\Code\src\go-zero-demo\mall\user\rpc>goctlrpcprotoc--help

NAME:

goctlrpcprotoc-generategrpccode

USAGE:

example:goctlrpcprotocxx.proto--go_out=./pb--go-grpc=./pb--zrpc_out=.

DESCRIPTION:

fordetails,seehttps://go-zero.dev/cn/goctl-rpc.html

OPTIONS:

--zrpc_outvaluethezrpcoutputdirectory

--stylevaluethefilenamingformat,see[https://github.com/zeromicro/go-zero/tree/master/tools/goctl/config/readme.md]

--homevaluethegoctlhomepathofthetemplate

--remotevaluetheremotegitrepoofthetemplate,--homeand--remotecannotbesetatthesametime,iftheyare,--remotehashigherpriority

Thegitrepodirectorymustbeconsistentwiththehttps://github.com/zeromicro/go-zero-template directory structure
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-6-3 06:46 , Processed in 0.332379 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表