From 85b5abf55e6a17cce8582f2dec95c8532964a252 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 28 Oct 2026 03:00:11 +0000 Subject: [PATCH] =?UTF-8?q?fix(cmd):=20./cmd=20expo=20dev=20=E9=80=80?= =?UTF-8?q?=E5=87=BA=E5=90=8E=20vite=20=E6=AE=8B=E7=95=99=E5=8D=A0?= =?UTF-8?q?=E7=94=A8=E7=AB=AF=E5=8F=A3=EF=BC=88=E6=94=B9=E4=B8=BA=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=BF=90=E8=A1=8C=20vite=20=E5=85=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E9=80=80=E5=87=BA=E6=97=B6=E5=8F=AF=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/build.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/electron/build.js b/electron/build.js index 9f8b80683..7cc64628d 100644 --- a/electron/build.js +++ b/electron/build.js @@ -549,10 +549,10 @@ if (["dev"].includes(argv[2])) { console.log(`前端地址:${webUrl || '本地 Web 服务'}`); const appEnv = {...process.env, EXPO_PUBLIC_WEB_URL: webUrl}; if (packagerUrl) appEnv.EXPO_PACKAGER_PROXY_URL = packagerUrl; - const children = [ - child_process.spawn("npx", ["vite", "--", "fromcmd"], {stdio: ["ignore", "inherit", "inherit"]}), - child_process.spawn("npx", ["expo", "start", "--dev-client", "--port", String(metroPort), ...argv.slice(4)], {stdio: "inherit", cwd: appDir, env: appEnv}), - ]; + // vite 直接用当前 node 运行入口文件:经 npx → sh → node 多层启动时,只杀 npx 会留下孤儿 vite 占着 517x 端口 + const vite = child_process.spawn(process.execPath, [require.resolve('vite/bin/vite.js'), "--", "fromcmd"], {stdio: ["ignore", "inherit", "inherit"]}); + const metro = child_process.spawn("npx", ["expo", "start", "--dev-client", "--port", String(metroPort), ...argv.slice(4)], {stdio: "inherit", cwd: appDir, env: appEnv}); + const children = [vite, metro]; let exiting = false; const stopAll = (code) => { if (exiting) return; @@ -561,7 +561,7 @@ if (["dev"].includes(argv[2])) { children.forEach(child => child.exitCode === null && child.kill('SIGTERM')); }; children.forEach(child => child.on('exit', code => stopAll(code || 0))); - ['SIGINT', 'SIGTERM'].forEach(signal => process.on(signal, () => stopAll(0))); + ['SIGINT', 'SIGTERM', 'SIGHUP'].forEach(signal => process.on(signal, () => stopAll(0))); })(); } else { startBuild({