我追了一下午的数据 bug,它和数据根本无关
来源:dev.to — 2026-08-12 · 6 min 阅读
📋 概述
这是 DEV 夏季 Bug Smash 大赛的参赛作品。npmx.dev 是开源的 npm registry 浏览器,用户反馈对比包时 tinyclip 总显示版本停在 0.0.1 而不是最新的 0.1.8。作者第一反应是比对逻辑读错了字段,结果发现代码完全正常。追查后真相落在 fetch 包裹层一个带下划线前缀、看似「接受但故意不用」的 _ttl 参数上——整个缓存契约建立在可配置 TTL 之上,却在客户端被静默接收而从未真正生效。这个故事讲的是调试中最难的一课:好理论也会悄悄失效。
🔑 核心要点
- 症状:对比包时版本号卡在首个发布版,而非最新 dist-tag。
- 第一直觉(比对逻辑读错字段)完全错误,代码本身没问题。
- 真正的根因在 fetch 包裹层那个下划线前缀的 _ttl 参数。
- 缓存契约设计成可配置 TTL,客户端却从未真正使用它。
- 好理论会悄悄失效,debugging 最难的是承认「我不知道 bug 在哪」。
💡 金句
你信以为真的理论会悄悄失去效力,你不得不承认自己不知道 bug 在哪了。
👍 0
👎 0
← 返回 dev.to 首页