分享一下某个debugger心路历程
1.起因
1.1现象
文章图片
文章图片
1.2代码:
启用
禁用
... js
const formState = reactive({
roleName: '',
roleStatus: 1
})
const rules = {
roleName: [{ required: true, message: '请填写角色名', trigger: 'blur' }],
roleStatus: [{ required: true, message: '请选择状态', trigger: 'blur' }]
}
...
2.逐渐抓狂 经过半个多小时反复的对照官方用例,以及之前写过的代码
经过不断的不断的尝试
我99.99%的确定自己的代码没啥问题
卧槽 ,为啥提示状态没有选, 一直让我选状态 MDZZ

文章图片
3.进展 虽然我可以睡服产品,取消状态必选的验证,绕过这个问题,但是这不符合我的风格。
收拾心态,重新上路。
从这个warning开始入手debbug吧
index.js?2a95:120 async-validator: ["'${name}' is not a valid ${type}"]先点进去,打个断点

文章图片
然后复现一下错误 找到调用栈

文章图片
栈底的是你写的方法,栈顶的是库的方法,有时间的可以一步步看一下大体流程。
我直接看的栈顶的几个函数
4.真相 方法还是打断点观察

文章图片
首先这个type:string让我有点不好的联想。这尼玛是哪来的,官网用例用的字符串,我为了传后端参数方便用的数字,这个当时反复对比的时候有注意过,没有引起我的警觉。平时基本也没加过这个参数。

文章图片
继续往下调试,调用string方法。

文章图片
string方法里面又调用type 然后把我的错误给push进去了

文章图片
然后我就悟了,估计是类型错误,但是尼玛能不能不要报我自定义的错误,就不能报个类型错误吗,干扰我debbuge方向

文章图片
解决方法:加个type。完美解决
const rules = {
roleName: [{ required: true, message: '请填写角色名', trigger: 'blur' }],
roleStatus: [{ type: 'number', required: true, message: '请选择状态', trigger: 'blur' }]
}
5.总结 【分享一下某个debugger心路历程】有洗Bug确实云里雾里,建议错误栈里源码调试下,这样还快一点。
推荐阅读
- 第326天
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 焦点学习田源分享第267天《来访》
- 《偶得》
- 2018.03.18
- 坚持分享第104天
- 皮一下
- 句子分享
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 康恩赫助力线头公益#义卖星推官#,分享你最喜爱的义卖明星