大家好,我是鱼皮。
标题是说给自己听的,最近,又因为我的自信,搞出了一个影响项目正常运行的 Bug。
事情是这样的,最近在搞一个新项目,之前基本都是我和另外一个前端朋友在开发。后来呢,我又拉了几位朋友加入进来,结果他们都反馈说代码在本地装不上依赖,导致运行不起来。
于是,有一位朋友就修改了项目中某一个依赖的版本号,然后依赖就安装成功了。结果运行项目时,出现了报错:试图从 undefined 未定义变量中获取属性。
代码如下:
// e.props 可能为 undefined
e.props.searchValue
这种错误其实是很低级的,有点类似 Java 中的 NPE(空指针异常)。于是估计这位朋友也是和我一样的心态,觉得这是个小问题,就直接加了个可选链操作符:
e?.props?.searchValue
这下代码不报错了,愉快提交,我也是想都没想就给他通过合并了,大伙都因为解决了问题,老开心了。
虽然后来我才发现是因为自己忘了提交 yarn.lock 文件到代码仓库中,导致他们下载的依赖版本号和我本地不同,所以才出现了我本地能运行,他们却运行不了的情况。
不过既然现在项目已经能跑了,就不管了吧,接着开心。
结果,今天我自己要使用系统时,才发现这个改过代码的功能怎么突然不能用了!?
排查后才发现,原来之前升级版本后,组件的函数参数发生了改变,通过之前的代码再也获取不到需要的属性值了。虽然通过加可选链操作符可以防止报错,但实际上,这行代码逻辑已经不对了,毫无意义。
对啊,我早该想到,为什么同样的代码,之前没因为 undefined 报错,升级后报错了呢?既然我们没改变,那变的肯定是第三方依赖啊!
所以还是太自信了,很多时候导致 Bug 产生的原因就是 “我以为的就是我以为的”。
最后总结两点:
希望大家能记在心里,千万别小看它们。我现在发现,工作中往往越自信,就越打脸。
肝项目到现在才抽空写了篇文章,明天又得上班了,这小 Bug 值一个点赞么?