From 3332ec541a3c9b4b73c2c0046a1e0fcd7778a231 Mon Sep 17 00:00:00 2001 From: vet Date: Tue, 14 Apr 2026 12:57:10 +0700 Subject: [PATCH] test --- pc-sdk-probe.sh | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/pc-sdk-probe.sh b/pc-sdk-probe.sh index c271ae8..d5ab4ab 100755 --- a/pc-sdk-probe.sh +++ b/pc-sdk-probe.sh @@ -7,6 +7,33 @@ cat <<'EOF' (() => { const stamp = () => new Date().toISOString(); const counts = {}; + if (!window.__deployTestWorkerWrapped) { + const NativeWorker = window.Worker; + window.Worker = function (url, options) { + console.log(`[probe ${stamp()}] new Worker`, { url: String(url), options }); + const worker = new NativeWorker(url, options); + worker.addEventListener("error", (event) => { + console.error("[probe worker error]", { + message: event.message, + filename: event.filename, + lineno: event.lineno, + colno: event.colno, + }); + }); + worker.addEventListener("messageerror", (event) => { + console.error("[probe worker messageerror]", event); + }); + const originalPostMessage = worker.postMessage.bind(worker); + worker.postMessage = (...args) => { + console.log(`[probe ${stamp()}] worker.postMessage`, { url: String(url), args }); + return originalPostMessage(...args); + }; + return worker; + }; + window.Worker.prototype = NativeWorker.prototype; + window.__deployTestWorkerWrapped = true; + console.log("[probe] Worker: wrapped; reload page after installing this probe to catch SDK worker creation"); + } const wrap = (name) => { const original = window[name]; if (typeof original !== "function") { @@ -190,7 +217,15 @@ cat <<'EOF' userID = userID || await window.__deployTestReadLocalForage("IM_USERID") || "6087132211"; console.log(`[probe ${stamp()}] manual setSqlWasmPath`, "/sql-wasm.wasm"); if (typeof window.setSqlWasmPath === "function") { - await window.setSqlWasmPath("/sql-wasm.wasm"); + try { + const setPathTimeout = new Promise((_, reject) => { + setTimeout(() => reject(new Error("manual window.setSqlWasmPath timeout after 5000ms")), 5000); + }); + await Promise.race([window.setSqlWasmPath("/sql-wasm.wasm"), setPathTimeout]); + console.log(`[probe ${stamp()}] manual setSqlWasmPath done`); + } catch (err) { + console.error(`[probe ${stamp()}] manual setSqlWasmPath failed`, err); + } } console.log(`[probe ${stamp()}] manual initDB start`, { userID, dataDir: "./" }); const timeout = new Promise((_, reject) => { @@ -207,6 +242,7 @@ cat <<'EOF' })(); 然后退出登录/刷新页面重新登录一次,观察是否打印: +- new Worker / worker.postMessage / worker error - initSDK / login / initDB / setSqlWasmPath called / returned - window error / unhandledrejection - counts 里的 initSDK/login 是否从 0 变成 1