fix(离线库): 关闭 PowerSync 多标签共享 worker —— 修复 Windows 升级后任务页永久「加载中」
Docker Build and Push / build-image (push) Successful in 1m30s
Docker Build and Push / build-image (push) Successful in 1m30s
现象: Windows 外壳 OTA 升级后, 任务页一直「加载中」; 其它不访问本地库的页面正常。 Android 正常。仅「原地升级/reload 之后」出现, 全新启动进程则正常。 根因: PowerSync Web 的 enableMultiTabs 默认在桌面端开启 (有 SharedWorker 时), 开启后会额外用 **共享 IndexedDB worker** 承载本地库。该 SharedWorker 跨页面 reload 存活, OTA applyUpdate 后 location.reload() 的新页面连上去时, 本地库读取永久挂起 —— 无异常、纯 pending, 所以 TaskPage 的 projects 一直是 null, 停在「加载中…」。 Android WebView 不支持 SharedWorker, 走独立 worker (随页面销毁), 因此不受影响。 实测 (真实 Windows 外壳 + WebView2 CDP): - 修复前: 目标页 /me 正常; Page.reload 后落到 /task 显示「加载中…」, 再导航仍卡住; shared_worker 目标仍在 (worker-*.js 前后同 URL)。 - 修复后: reload 后 /task 正常渲染 25 个任务; shared_worker 目标消失; 控制台仅剩 PowerSync「未启用多标签」提示。 修复: database.enableMultiTabs = false。本应用是单窗口外壳 (dock.html 不访问本地库), 不需要多标签同步; 该选项关闭后本地库改用随页面销毁的独立 worker, reload 干净。 注: 该问题与 OTA 包内容无关 (同一个包全新启动正常), 属 reload 路径的运行时缺陷。
This commit is contained in:
@@ -13,6 +13,13 @@ export function getPowersyncDb() {
|
|||||||
database: {
|
database: {
|
||||||
// 默认 IDBBatchAtomicVFS (IndexedDB), 兼容性最广; WebView2 (Chromium) 后续可切 OPFS 加速
|
// 默认 IDBBatchAtomicVFS (IndexedDB), 兼容性最广; WebView2 (Chromium) 后续可切 OPFS 加速
|
||||||
dbFilename: 'iboard-powersync.db',
|
dbFilename: 'iboard-powersync.db',
|
||||||
|
// 关闭多标签支持 —— 否则桌面端 (WebView2/Chromium) 会启用 **共享 IndexedDB worker**:
|
||||||
|
// enableMultiTabs 默认为 true (桌面且有 SharedWorker 时), 该 SharedWorker 会跨页面
|
||||||
|
// reload 存活; OTA 升级后 reload 的新页面连上去时本地库读取会永久挂起
|
||||||
|
// (无异常、纯 pending) —— 表现为任务页一直「加载中」, 其它不碰本地库的页面正常。
|
||||||
|
// Android WebView 不支持 SharedWorker, 因此只有 Windows 外壳命中。
|
||||||
|
// 本应用是单窗口外壳 (dock.html 不访问本地库), 不需要多标签同步。
|
||||||
|
enableMultiTabs: false,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user