Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/fix-module-loader-prerender-env.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fixes the per-environment module loader returning the wrong Vite dev environment from `getSSREnvironment()`. With adapters like `@astrojs/cloudflare` configured with `prerenderEnvironment: 'node'`, a separate `prerender` Vite environment is created and a dedicated loader is built for it; the loader now correctly returns the environment it was constructed for, so `getComponentMetadata()` crawls the right module graph for prerendered routes in dev.
4 changes: 2 additions & 2 deletions packages/astro/src/core/module-loader/vite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import type { RunnableDevEnvironment } from 'vite';
import { collectErrorMetadata } from '../errors/dev/utils.js';
import { getViteErrorPayload } from '../errors/dev/vite.js';
import type { ModuleLoader, ModuleLoaderEventEmitter } from './runner.js';
import { ASTRO_VITE_ENVIRONMENT_NAMES } from '../constants.js';

export function createViteLoader(
viteServer: vite.ViteDevServer,
Expand Down Expand Up @@ -110,7 +109,8 @@ export function createViteLoader(
return viteServer.environments.client.hot.send(msg);
},
getSSREnvironment() {
return viteServer.environments[ASTRO_VITE_ENVIRONMENT_NAMES.ssr] as RunnableDevEnvironment;
// Use the loader's actual environment so prerender handlers crawl the correct module graph.
return ssrEnvironment;
},
isHttps() {
return !!ssrEnvironment.config.server.https;
Expand Down
Loading