跳到主要内容

卡了我三天的一个报错,原因蠢到我有点不想写

可乐不卖课
可乐不卖课

· 阅读约 2 分钟

上周三晚上开始,一直弄到周日晚上。四天里有三天,是在跟一个根本不存在的 bug 叫劲。

项目很小,给自己写的一个脚本,把散在几个地方的笔记抓下来合成一个静态页面。为什么要写这个——这个月我已经第三次把同一段东西在自己的三个 app 之间来回找了,烦。——差点又开始讲需求背景了,打住。就三百来行的小东西。

周三我给标题加了个自动分组,跑一下,报错:

TypeError: notes.reduce is not a function

第一反应,数据源变了。查,打印出来是数组,长度 37,有内容。那就是我中间那个 transform 把它转成对象了。翻代码,没有这回事。

(中间这段我本来写了两百多字,描述我怎么一步步排除的,写完自己看了一遍,太像排查教程。删了。)

总之就是,我每加一个 console.log,数据一路都对,到 reduce 那行就炸。前一行明明打印的是数组,下一行拿到的就不是。那种感觉挺难受的,你开始怀疑自己对这门语言的理解。

第一天弄到两点。第二天照样。周四晚上孩子睡了以后我又坐回去弄了一个多小时,还是那个错。周五周六没碰它,我那时候的状态是,看到这个项目就烦。

周日晚上,起来倒水,鼠标没动,屏幕上是另一个终端窗口,我上周开的 npm run watch。我盯着它看了两秒,才发现那里面其实早就退出了,退之前打了一行红字,被后面刷过去的日志顶到上面去。我三天没往回滚过一次。

所以这三天,我一直在改源码,跑的一直是 dist 里几天前编译出来的旧文件。reduce 那个错在旧文件里是真的,是我更早一版写的,我改得那版早把它修了。我一直在跟一个已经不存在的 bug 打架。

关了那个窗口,重新 build,再跑,一次过。

说句实话,当时也没什么释然的感觉。就是坐了一会,想笑,又有点想砸键盘。三天。

——中间我甚至在备忘录里列了个排查清单,五条,想着弄完可以整理一下发出来,「三步定位这类问题」——打住。没什么可整理的。就是我没看构建产物,也没检查那个 watch 还活着没有(没有别的意思,我是说这错太低级,不值得包装)。这不是方法论。

那天晚上剩下的时间我没继续写那个脚本。隔天早上又打开看了一眼,功能其实早写完了,只是一直没看见。

就说到这。

可乐不卖课
可乐不卖课

前技术博主,翻过车。现在只写干货,不带货,别问。

查看主页 →