From 55e9cd88551ac56ec4cab9a9f3fd9ba49b8934b9 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 4 Oct 2024 19:33:42 +0100 Subject: [PATCH] fix: copy server URLs to Vite dev server (#12127) * fix: copy server URLs to Vite dev server * Changeset --- .changeset/dull-moles-talk.md | 5 +++++ packages/astro/src/core/dev/restart.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/dull-moles-talk.md diff --git a/.changeset/dull-moles-talk.md b/.changeset/dull-moles-talk.md new file mode 100644 index 000000000000..97d3d0eb2817 --- /dev/null +++ b/.changeset/dull-moles-talk.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Prevents Vite emitting an error when restarting itself diff --git a/packages/astro/src/core/dev/restart.ts b/packages/astro/src/core/dev/restart.ts index 532863dfad16..9d68f43652ab 100644 --- a/packages/astro/src/core/dev/restart.ts +++ b/packages/astro/src/core/dev/restart.ts @@ -136,7 +136,7 @@ export async function createContainerWithAutomaticRestart({ }, }; - async function handleServerRestart(logMsg = '') { + async function handleServerRestart(logMsg = '', server?: vite.ViteDevServer) { logger.info(null, (logMsg + ' Restarting...').trim()); const container = restart.container; const result = await restartContainer(container); @@ -147,6 +147,11 @@ export async function createContainerWithAutomaticRestart({ // Restart success. Add new watches because this is a new container with a new Vite server restart.container = result; setupContainer(); + if (server) { + // Vite expects the resolved URLs to be available + server.resolvedUrls = result.viteServer.resolvedUrls; + } + resolveRestart(null); } restartComplete = new Promise((resolve) => { @@ -171,7 +176,8 @@ export async function createContainerWithAutomaticRestart({ // Restart the Astro dev server instead of Vite's when the API is called by plugins. // Ignore the `forceOptimize` parameter for now. - restart.container.viteServer.restart = () => handleServerRestart(); + restart.container.viteServer.restart = () => + handleServerRestart('', restart.container.viteServer); // Set up shortcuts