跳到主要内容

一个大小写,搞了我两个通宵

接单小蒋
接单小蒋

· 阅读约 3 分钟

这周接了个后台管理系统的单,甲方做建材的,报价一万二,工期本来谈的十二天。活儿本身不难,Vue3 加 Vite,套个现成的 admin 模板,改改页面接接接口就完事。我上周五就把本地跑通了,页面、路由、权限、假数据全对。

周一早上传服务器,白屏。

也不是全白,登录页能进,点进主控制台就白。控制台报“Failed to resolve component: DataTable”。我当时心想,没注册呗,查注册,查了半天,注册了。import 也有,components 里也写了。

我重装 node_modules,换了 npm 源,把 node 版本从 18 降到 16。没用。又去翻组件库文档,看是不是版本不兼容,把依赖升了降、降了升,来回折腾了三四轮。到周一晚上十一点,我还在对着那个破报错发呆,心想这单是不是要亏了。一万二报得不高,本来打算五天干完剩下的时间再接一单小的。照这么弄下去,两天就搭进去了。

说白了最气人的是本地一点问题没有。本地跑得好好的,一打包就崩。我甚至怀疑是 Vite 的 tree-shaking 把那个组件摇没了,去翻构建产物,里面确实有,就是找不到。

周二早上我干了件蠢事,把整个项目除了 src 以外全删了重新配。配到下午两点,还是白。这时候我上了个厕所,回来盯着文件名看了一眼。

文件叫 DataTable.vue,引入写的是 dataTable.vue

一个大写 D,一个小写 d。就这一个字母。

我本地是 Windows,不区分大小写。服务器是 Linux,区分。本地能跑,服务器就找不到。

两个通宵,几轮依赖升降,删了重配的构建配置,全是因为这一个字母。

改完,打包,上传,秒好。

我对着屏幕坐了五分钟,没生气,也没想笑。就是那种,你花了十几个小时绕了一大圈,结果问题在你每次打开这个文件都会看到的地方。不是你菜,是这个东西藏得确实阴,但你心里清楚,这事儿本来五分钟能查出,如果你一开始就去服务器上看文件路径而不是在本地反复试。

尾款甲方昨天打了,没扣钱,还夸了一句“你们做技术的细心”。我没回。

那两天本来能再接一个小单,做企业官网的,三千五,人家找了个学生做了,报价一千二。卷不过,也不怪人家。跑题了说回来,这事儿给我留了个教训——说是教训也不对,我到现在也没加什么大小写检查的插件。人的毛病哪有那么容易改,下次遇到,八成还是先在本地翻半天。

但有一说一,我以后所有项目文件名,全部小写。全部。谁劝我写驼峰我跟谁急。

这单赚是赚了,工期也没拖,但那两个晚上本来能睡个好觉。账我算得清:少睡十六个小时,换算成接单能力的损耗,比那三千五的小单还贵。

接单小蒋
接单小蒋

自由职业接外包。技术是工具,交付是本事,账要算明白。

查看主页 →