From d50bffad3edc2e990fafcdc40205fd22c898ebb0 Mon Sep 17 00:00:00 2001 From: hicccc77 <98377878+hicccc77@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:45:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20elevated=20helper=20=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=94=B9=E4=B8=BA=E6=89=BE=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=90=88=E6=B3=95=20JSON=20=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=20stderr=20=E6=B7=B7=E5=85=A5?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/services/keyServiceMac.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/electron/services/keyServiceMac.ts b/electron/services/keyServiceMac.ts index fab059e..f215870 100644 --- a/electron/services/keyServiceMac.ts +++ b/electron/services/keyServiceMac.ts @@ -380,15 +380,20 @@ export class KeyServiceMac { } const lines = String(stdout).split(/\r?\n/).map(x => x.trim()).filter(Boolean) - const last = lines[lines.length - 1] - if (!last) throw new Error('elevated helper returned empty output') + if (!lines.length) throw new Error('elevated helper returned empty output') + // 找最后一个能成功 parse 的 JSON 行(stderr 混入 stdout 时会有非 JSON 行) let payload: any - try { - payload = JSON.parse(last) - } catch { - throw new Error('elevated helper returned invalid json: ' + last) + let lastJsonLine = '' + for (let i = lines.length - 1; i >= 0; i--) { + if (!lines[i].startsWith('{')) continue + try { + payload = JSON.parse(lines[i]) + lastJsonLine = lines[i] + break + } catch { continue } } + if (!payload) throw new Error('elevated helper returned invalid json: ' + lines[lines.length - 1]) if (payload?.success === true && typeof payload?.key === 'string') return payload.key if (typeof payload?.result === 'string') return payload.result throw new Error('elevated helper json missing key/result')