fix(vite): resolve dev & preview server promises on process exit (#14812)
This commit is contained in:
parent
06fbb4ffb6
commit
b35187c142
@ -58,8 +58,11 @@ export default async function* viteDevServerExecutor(
|
||||
};
|
||||
}
|
||||
|
||||
// This Promise intentionally never resolves, leaving the process running
|
||||
await new Promise(() => {});
|
||||
await new Promise<void>((resolve) => {
|
||||
process.once('SIGINT', () => resolve());
|
||||
process.once('SIGTERM', () => resolve());
|
||||
process.once('exit', () => resolve());
|
||||
});
|
||||
}
|
||||
|
||||
async function runViteDevServer(server: ViteDevServer): Promise<void> {
|
||||
@ -68,12 +71,9 @@ async function runViteDevServer(server: ViteDevServer): Promise<void> {
|
||||
|
||||
const processOnExit = async () => {
|
||||
await server.close();
|
||||
process.off('SIGINT', processOnExit);
|
||||
process.off('SIGTERM', processOnExit);
|
||||
process.off('exit', processOnExit);
|
||||
};
|
||||
|
||||
process.on('SIGINT', processOnExit);
|
||||
process.on('SIGTERM', processOnExit);
|
||||
process.on('exit', processOnExit);
|
||||
process.once('SIGINT', processOnExit);
|
||||
process.once('SIGTERM', processOnExit);
|
||||
process.once('exit', processOnExit);
|
||||
}
|
||||
|
||||
@ -44,14 +44,11 @@ export default async function* vitePreviewServerExecutor(
|
||||
|
||||
const processOnExit = async () => {
|
||||
await closeServer(server);
|
||||
process.off('SIGINT', processOnExit);
|
||||
process.off('SIGTERM', processOnExit);
|
||||
process.off('exit', processOnExit);
|
||||
};
|
||||
|
||||
process.on('SIGINT', processOnExit);
|
||||
process.on('SIGTERM', processOnExit);
|
||||
process.on('exit', processOnExit);
|
||||
process.once('SIGINT', processOnExit);
|
||||
process.once('SIGTERM', processOnExit);
|
||||
process.once('exit', processOnExit);
|
||||
|
||||
// Launch the build target.
|
||||
const target = parseTargetString(options.buildTarget, context.projectGraph);
|
||||
@ -89,7 +86,11 @@ export default async function* vitePreviewServerExecutor(
|
||||
}
|
||||
}
|
||||
|
||||
await new Promise(() => {});
|
||||
await new Promise<void>((resolve) => {
|
||||
process.once('SIGINT', () => resolve());
|
||||
process.once('SIGTERM', () => resolve());
|
||||
process.once('exit', () => resolve());
|
||||
});
|
||||
}
|
||||
|
||||
function closeServer(server?: PreviewServer): Promise<void> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user