From 63c588145b353664714b58ebc0e04d8e7483340f Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sat, 3 Oct 2026 08:28:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(extension):=20=E5=90=8C=E6=AD=A5=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=97=B6=E7=9C=9F=E5=AE=9E=E5=8E=9F=E5=9B=A0=E8=A2=AB?= =?UTF-8?q?=E5=90=9E=E6=88=90=E3=80=8C=E5=A4=B1=E8=B4=A5:=20undefined?= =?UTF-8?q?=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit background 的「未配置站点」分支只返回 {ok:false, reason:'not configured'}, 而 options.js 只读 result.error || result.status —— 两个字段都没有, 于是模板插值出 undefined,用户看到「失败: undefined」,真实原因看不到。 实测服务端日志里没有任何 /api/history/sync 请求,确认请求根本没发出。 修:两版 options.js 改为 error || reason || status || '未知错误', 两版 background.js 的 reason 换成中文可操作提示 「未配置站点地址,请先填写并保存」。 firefox 版本升到 1.1.4(已签名的 1.1.3 内容已冻结,须重签)。 --- extension/chrome/background.js | 2 +- extension/chrome/options.js | 4 +++- extension/firefox/.amo-upload-uuid | 1 + extension/firefox/background.js | 2 +- extension/firefox/manifest.json | 2 +- extension/firefox/options.js | 5 ++++- 6 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 extension/firefox/.amo-upload-uuid diff --git a/extension/chrome/background.js b/extension/chrome/background.js index 93d035d..67e542f 100644 --- a/extension/chrome/background.js +++ b/extension/chrome/background.js @@ -246,7 +246,7 @@ async function syncNow() { ); }); const { serverUrl, syncToken, deviceName } = stored; - if (!serverUrl) return { ok: false, reason: 'not configured' }; + if (!serverUrl) return { ok: false, reason: '未配置站点地址,请先填写并保存' }; // 每次从持久化存储恢复游标和失败队列,兼容 MV3 service worker 休眠重启。 pendingItems = Array.isArray(stored.pending) ? stored.pending : []; diff --git a/extension/chrome/options.js b/extension/chrome/options.js index 70102d5..3ae7fcc 100644 --- a/extension/chrome/options.js +++ b/extension/chrome/options.js @@ -33,6 +33,8 @@ document.getElementById('sync').addEventListener('click', () => { ? '无待同步' : result.ok ? `同步 ${result.count} 条,共 ${result.total}` - : `失败: ${result.error || result.status}`; + // 后台各条失败路径给的字段不一致(reason / error / status), + // 只读 error 和 status 会让「未配置站点」显示成「失败: undefined」。 + : `失败: ${result.error || result.reason || result.status || '未知错误'}`; }); }); diff --git a/extension/firefox/.amo-upload-uuid b/extension/firefox/.amo-upload-uuid new file mode 100644 index 0000000..a40d99c --- /dev/null +++ b/extension/firefox/.amo-upload-uuid @@ -0,0 +1 @@ +{"uploadUuid":"fb05e275eefe472399d38c15fb248870","channel":"unlisted","xpiCrcHash":"e49706a0c09801097e98c94bb18b76353480053afc23f75e3590920384d8faee"} \ No newline at end of file diff --git a/extension/firefox/background.js b/extension/firefox/background.js index 164235e..5e1068a 100644 --- a/extension/firefox/background.js +++ b/extension/firefox/background.js @@ -164,7 +164,7 @@ async function syncNow() { ); }); const { serverUrl, syncToken, deviceName } = stored; - if (!serverUrl) return { ok: false, reason: 'not configured' }; + if (!serverUrl) return { ok: false, reason: '未配置站点地址,请先填写并保存' }; pendingItems = Array.isArray(stored.pending) ? stored.pending : []; lastSyncTime = Number(stored.lastSyncTime) || 0; diff --git a/extension/firefox/manifest.json b/extension/firefox/manifest.json index c208b2e..c33107a 100644 --- a/extension/firefox/manifest.json +++ b/extension/firefox/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "JianF Nav Sync", - "version": "1.1.3", + "version": "1.1.4", "description": "同步浏览历史到自建导航门户,按访问频次自动排序显示常用服务", "browser_specific_settings": { "gecko": { diff --git a/extension/firefox/options.js b/extension/firefox/options.js index de900ee..f7d821f 100644 --- a/extension/firefox/options.js +++ b/extension/firefox/options.js @@ -33,6 +33,9 @@ document.getElementById('sync').addEventListener('click', () => { ? '无待同步' : result.ok ? `同步 ${result.count} 条,共 ${result.total}` - : `失败: ${result.error || result.status}`; + // 后台各条失败路径给的字段不一致(reason / error / status), + // 以前只读 error 和 status,于是「未配置站点」这种返回会显示成 + // 「失败: undefined」——真实原因被吞掉,只剩一个无意义的报错。 + : `失败: ${result.error || result.reason || result.status || '未知错误'}`; }); });