const remote = await fetch('/offline/version.json').then(r => r.json())
if (remote.v !== local.v) await download(remote.url)

离线包更新发了两次,用户打开还是上周的页面,只有清缓存重进才变,日志里版本号一直报 1.0.3。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,版本比对写在启动并渲染之后,首屏已经用本地旧包跑完,检测到新版本只是下载,下一次启动才生效。用户很少彻底退出应用,就一直停在旧包上。

「离线包版本比对」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

处理上按这个顺序:把版本检查提到渲染之前,先拿到远端版本再决定加载哪份包;下载完提示重启,别等下一次冷启动;本地记录已下载的版本号,避免每次全量拉一遍。

改完只确认一件事:发新包后重启一次就是新版本,日志里的版本号跟着变。

作者 9823189