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