From 9389325c80373d9cd96c2845d39e0b46ba2a7b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20Veps=C3=A4l=C3=A4inen?= Date: Wed, 7 Jul 2021 10:22:06 +0300 Subject: [PATCH] fix: Remember to close webpack compiler It looks like this is the right way to go instead of `process.exit`. --- app/angular/src/server/build.ts | 3 --- lib/builder-webpack5/src/index.ts | 23 +++++++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/angular/src/server/build.ts b/app/angular/src/server/build.ts index 54d61f8c6318..fe1ed4fb11e3 100644 --- a/app/angular/src/server/build.ts +++ b/app/angular/src/server/build.ts @@ -5,9 +5,6 @@ import options from './options'; async function build() { try { await buildStatic(options); - - // #15227 - process.exit(0); } catch (error) { logger.error(error); } diff --git a/lib/builder-webpack5/src/index.ts b/lib/builder-webpack5/src/index.ts index c1639be842c1..cec11f62cfbe 100644 --- a/lib/builder-webpack5/src/index.ts +++ b/lib/builder-webpack5/src/index.ts @@ -129,14 +129,19 @@ export const build: WebpackBuilder['build'] = async ({ options, startTime }) => const config = await getConfig(options); return new Promise((succeed, fail) => { - webpackInstance(config).run((error, stats) => { + const compiler = webpackInstance(config); + + compiler.run((error, stats) => { if (error || !stats || stats.hasErrors()) { logger.error('=> Failed to build the preview'); process.exitCode = 1; if (error) { logger.error(error.message); - return fail(error); + + compiler.close(() => fail(error)); + + return; } if (stats && (stats.hasErrors() || stats.hasWarnings())) { @@ -145,7 +150,9 @@ export const build: WebpackBuilder['build'] = async ({ options, startTime }) => errors.forEach((e) => logger.error(e.message)); warnings.forEach((e) => logger.error(e.message)); - return fail(stats); + compiler.close(() => fail(stats)); + + return; } } @@ -154,7 +161,15 @@ export const build: WebpackBuilder['build'] = async ({ options, startTime }) => stats.toJson({ warnings: true }).warnings.forEach((e) => logger.warn(e.message)); } - return succeed(stats); + // https://webpack.js.org/api/node/#run + // #15227 + compiler.close((closeErr) => { + if (closeErr) { + return fail(closeErr); + } + + return succeed(stats); + }); }); }); };