From 6694eab92305c3030229e5150fbb622b8a629ce9 Mon Sep 17 00:00:00 2001 From: Steve Strates Date: Wed, 20 May 2026 12:36:32 -0400 Subject: [PATCH] fix: Handle non-string stdout from execa on Node 24 On Node 24, execa may return stdout as a Uint8Array instead of a string. When coerced via template literal this becomes "[object Uint8Array]", causing version parsing to fail with "Cannot parse Dokku server version from output:". Wrap all stdout access in String() to ensure a string regardless of Node version. --- src/core/dokku.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/dokku.ts b/src/core/dokku.ts index 62685cf..5e4d8c2 100644 --- a/src/core/dokku.ts +++ b/src/core/dokku.ts @@ -48,16 +48,16 @@ export function createRunner(opts: RunnerOptions = {}): Runner { if (opts.host) { try { const result = await execa('ssh', [...sshControlFlags, `dokku@${opts.host}`, '--', ...args.map(shellQuote)]) - return { stdout: result.stdout, ok: true } + return { stdout: String(result.stdout ?? ''), ok: true } } catch (e: any) { - return { stdout: e.stdout ?? '', ok: false } + return { stdout: String(e.stdout ?? ''), ok: false } } } else { try { const result = await execa('dokku', args) - return { stdout: result.stdout, ok: true } + return { stdout: String(result.stdout ?? ''), ok: true } } catch (e: any) { - return { stdout: e.stdout ?? '', ok: false } + return { stdout: String(e.stdout ?? ''), ok: false } } } }