跳到主要内容

被一个报错卡了三天,原因蠢得我不想说

周工转码中
周工转码中

· 阅读约 3 分钟

我带班那几年最怕一种活,不是活难,是查漏。楼顶渗水,你从漏水那家屋里看,天花板上黄了一片,但问题根本不在他家。水是顺着楼板缝从隔壁串过来的,隔壁又好好的,再往上查,是顶层雨水管堵了。查这种问题最熬人,你得一层一层往上排除,每一层看起来都对,但水就是漏。

这周我算是重温了一遍这滋味。

事情是这样的,上个月底我给自己写了个小工具,就是把我简历里那几个项目的关键词抽出来,去招聘网站上自动扒拉职位描述,比对一下缺什么技能。功能不复杂,本地跑得好好的,我还在我老婆面前显摆了一把,说你看,这玩意儿要是去年就有,我能少刷俩月招聘网站。

然后我把它部署到服务器上。这一步我搞了挺久,文档看了一晚上,什么反向代理什么进程守护,咱不懂就学,磕磕绊绊总算把服务拉起来了。结果呢,网页打不开,一片白,控制台里报了个错。

具体报的什么我记不太清了,当时也看不太懂,反正就是“Cannot read properties of undefined”之类的东西。这报错我熟,之前见过,意思是读了个没定义的东西。网上说就是某个对象是空的,你偏要去读它的属性。

我想,那肯定是代码哪里没判空呗。我把代码翻出来,一行一行看,哪儿哪儿都判了,该给默认值的给了默认值,不该传的都没传。本地测试也过,一点毛病没有。

那天晚上我搞到十二点半。女儿湿疹有点反复,半夜起来给她抹药,回来坐电脑前又看了半天,没看出来。睡觉的时候脑子里还在过那个报错,迷迷糊糊的,跟当年在工地上躺着想水泥配比一样。

第二天我又上去看,把日志调出来,翻到报错那一段,发现它是在启动的时候挂的。而且我注意到一个细节,报错说的是某个环境变量里读出来的是undefined。我一个激灵,去检查配置文件,发现我给环境变量设值的时候,下划线写成了横杠。

DATABASE_PASSWORD,我写成了DATABASE-PASSWORD。

就这么个破事。就一个字符的事。服务器读不到密码,连不上库,整个服务全白屏。我盯着那个横杠看了五分钟,愣是没想起来是谁干的。然后我想起来,是我自己头天晚上部署的时候手打的。

这个比方可能不太恰当,就好比你砌了一面墙,又抹了灰又贴了砖,最后验收那天发现,地基里埋的水管,有一根接反了。就一根,就一个接头,整个楼都得停下来等它修。

说不上来是什么感觉。不是生气,也不是委屈,就是觉得,四十岁的人了,学个新东西,明明图纸看得明白,逻辑也通,最后栽在一个符号上。那感觉跟当年第一次用全站仪把坐标输反了一样,仪器没错,道理没错,人错了。

后来我把横杠改回下划线,重启服务,页面出来了,数据也加载了。我坐在椅子上发了会儿呆,想跟谁说这件事,又觉得丢人。跟同行说吧,他们肯定笑我,跟媳妇说吧,她只会说哦那你修好了就行早点睡。

第三天我接着用那个工具,它跑得挺稳。我给它加了个功能,把我缺的技能项按出现次数排了个序,排在第一个的是“Docker”,第二个是“Kubernetes”。都是我这辈子没用过的东西。

行吧,一个道理,从横杠到竖杠,一步一步学呗。四十岁怎么了。

周工转码中
周工转码中

干了二十年土木,四十岁转码第六个月。手艺人学新手艺。

查看主页 →