From e8cfc807ea2c11ae2680cd01f63f97e8b4d43470 Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Mon, 11 Dec 2023 04:26:19 +0000 Subject: [PATCH] fix(electron): use tree-kill for electron dev (#5252) electron process sometimes do not get re-spawned because of some child process not being closed. use tree-kill instead. --- packages/frontend/electron/package.json | 1 + packages/frontend/electron/scripts/dev.ts | 5 +++-- yarn.lock | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/frontend/electron/package.json b/packages/frontend/electron/package.json index 4eb74bdc3b..c71646a3d7 100644 --- a/packages/frontend/electron/package.json +++ b/packages/frontend/electron/package.json @@ -63,6 +63,7 @@ "rxjs": "^7.8.1", "semver": "^7.5.4", "tinykeys": "^2.1.0", + "tree-kill": "^1.2.2", "ts-node": "^10.9.1", "undici": "^6.0.0", "uuid": "^9.0.1", diff --git a/packages/frontend/electron/scripts/dev.ts b/packages/frontend/electron/scripts/dev.ts index fa22326a49..afba0df2df 100644 --- a/packages/frontend/electron/scripts/dev.ts +++ b/packages/frontend/electron/scripts/dev.ts @@ -4,6 +4,7 @@ import { resolve } from 'node:path'; import type { ChildProcessWithoutNullStreams } from 'child_process'; import type { BuildContext } from 'esbuild'; import * as esbuild from 'esbuild'; +import kill from 'tree-kill'; import { config, electronDir, rootDir } from './common'; @@ -24,9 +25,9 @@ function spawnOrReloadElectron() { if (watchMode) { return; } - if (spawnProcess !== null) { + if (spawnProcess !== null && spawnProcess.pid) { spawnProcess.off('exit', process.exit); - spawnProcess.kill('SIGINT'); + kill(spawnProcess.pid); spawnProcess = null; } diff --git a/yarn.lock b/yarn.lock index e3055874a6..8b8fb22c56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -499,6 +499,7 @@ __metadata: rxjs: "npm:^7.8.1" semver: "npm:^7.5.4" tinykeys: "npm:^2.1.0" + tree-kill: "npm:^1.2.2" ts-node: "npm:^10.9.1" undici: "npm:^6.0.0" uuid: "npm:^9.0.1"