From 54e78112b04c9f794759c5c1a6bc94e939953e5b Mon Sep 17 00:00:00 2001 From: everhardt Date: Fri, 15 Jul 2022 11:08:53 +0200 Subject: [PATCH 1/4] fix: "Channel closed" error in child on graceful shutdown after SIGTERM fixes wclr/ts-node-dev#320 --- src/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index ed1be9c..424760c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -220,8 +220,6 @@ export const runDev = ( child.stopping = true child.respawn = true if (child.connected === undefined || child.connected === true) { - log.debug('Disconnecting from child') - child.disconnect() if (!willTerminate) { killChild() } From db66f4b0f0a13b05ea665fe559a3d0ac5e33acff Mon Sep 17 00:00:00 2001 From: everhardt Date: Fri, 15 Jul 2022 11:31:33 +0200 Subject: [PATCH 2/4] fix: allow installing from GH directly --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 897b6a7..e0be26a 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "scripts": { "ts-node-dev": "node ./lib/bin", "build": "tsc -p tsconfig.build.json", + "prepare": "npm run build", "release": "np", "test": "yarn build && ts-node -T node_modules/mocha/bin/mocha test/*.test.ts", "test-dev": "yarn ts-node-dev -T --respawn --deps --watch lib node_modules/mocha/bin/mocha test/*.test.ts --output", @@ -98,4 +99,4 @@ "publishConfig": { "registry": "https://registry.npmjs.org" } -} +} \ No newline at end of file From 8cda15c66ef40da8f0b36e869348360fb8664dbd Mon Sep 17 00:00:00 2001 From: everhardt Date: Sat, 16 Jul 2022 08:03:57 +0200 Subject: [PATCH 3/4] Revert "fix: "Channel closed" error in child on graceful shutdown after SIGTERM" This reverts commit 54e78112b04c9f794759c5c1a6bc94e939953e5b. --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index 424760c..ed1be9c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -220,6 +220,8 @@ export const runDev = ( child.stopping = true child.respawn = true if (child.connected === undefined || child.connected === true) { + log.debug('Disconnecting from child') + child.disconnect() if (!willTerminate) { killChild() } From c23ff77637acd88f0fc57b7a031548eded06dcea Mon Sep 17 00:00:00 2001 From: everhardt Date: Sat, 16 Jul 2022 08:07:42 +0200 Subject: [PATCH 4/4] fix: "Channel closed" error in child on graceful shutdown after SIGTERM --- src/wrap.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/wrap.ts b/src/wrap.ts index 32fd683..30af2e1 100644 --- a/src/wrap.ts +++ b/src/wrap.ts @@ -67,18 +67,22 @@ process.on('uncaughtException', function (err: any) { console.error((err && err.stack) || err) } - ipc.send({ - error: isTsError ? '' : (err && err.name) || 'Error', - // lastRequired: lastRequired, - message: err ? err.message : '', - code: err && err.code, - willTerminate: hasCustomHandler, - }) + if (process.connected) { + ipc.send({ + error: isTsError ? '' : (err && err.name) || 'Error', + // lastRequired: lastRequired, + message: err ? err.message : '', + code: err && err.code, + willTerminate: hasCustomHandler, + }) + } }) // Hook into require() and notify the parent process about required files makeHook(cfg, module, function (file) { - ipc.send({ required: file }) + if (process.connected) { + ipc.send({ required: file }) + } }) // Check if a module is registered for this extension