【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)’ | ‘KEY’, got 'IDENT’报错解决方案
大家好 我是寸铁👊
总结了一篇user.api 30:2 syntax error: expected ‘)’ | ‘KEY’, got 'IDENT’解决方案的文章✨
喜欢的小伙伴可以点点关注 💝
问题背景
大家好,我是寸铁。今天在学习gozero
框架使用jwt
进行鉴权登录时,发现了一个bug , 下面和寸铁一起来瞧瞧这个bug
是怎么样的?
jwt鉴权
要开启jwt
鉴权操作,首先要在api
文件中,在对应的service
上面加上@server
存在字段jwt
。代码如下:
@server(
jwt : Auth
)
接下来就是使用goctl
一键生成代码啦
goctl转换
进入对应的目录,执行如下命令
goctl api go -api user.api -dir.
顺利的话,就会出现Done
回复。
报错
运行代码,报错如下:
错误排查
-
首先,先看一下报错的位置,发现是在
jwt : Auth
的第二个字符出错(以空格
作为分割符)。 -
接着,再看一下为什么报错,根据错误的类型提示:报错类型是
syntax
即 语法错误,确定是语法错误后,试着添加一个)
也是报错(这里添加)
不太符合逻辑)。 -
最后,可以查一下官方文档,看一下是哪个位置出错,是哪个位置缺少了什么符号,或者大小写之类的。
发现官方文档与我写的jwt
是一样的,那错误到底出在哪个地方呢?
不管了,先把官方文档的这行代码复制过去
再使用goctl
进行转换,运行结果如下:
成功转换!
回过头来看一下两行代码有什么不同!
好家伙,语法上的定义还是比较严格的,只差一个
:
就无法通过!
这让我想起之前的一些文章bug
, 代码差一个符号就会崩掉!
结语
对于一些语法定义比较严格的,在写的时候要尤其关注这个问题,否则可能会出现语法错误,导致代码过不去,有时候通过了,但是只差一个字符,可能程序的结果就会不同,这一点要尤其注意,实在不知道写的对不对,可以复制官方文档的代码,再根据需求修改也是个不错的思路!
看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕
往期好文💕
保姆级教程
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero
【Go-Zero】手把手带你在goland中创建api文件并设置高亮
报错解决
【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项
【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案
【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案
【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案
【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案