createPreviewServer() — astro Function Reference
Architecture documentation for the createPreviewServer() function in preview.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 6008a2dc_9446_e8c8_ad66_7ad3826f0ef2["createPreviewServer()"] 34969da5_3aef_c4dc_e500_3adc3dde5df6["preview.ts"] 6008a2dc_9446_e8c8_ad66_7ad3826f0ef2 -->|defined in| 34969da5_3aef_c4dc_e500_3adc3dde5df6 style 6008a2dc_9446_e8c8_ad66_7ad3826f0ef2 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/integrations/node/src/preview.ts lines 11–66
const createPreviewServer: CreatePreviewServer = async (preview) => {
let ssrHandler: ServerModule['handler'];
try {
process.env.ASTRO_NODE_AUTOSTART = 'disabled';
const ssrModule: MaybeServerModule = await import(preview.serverEntrypoint.toString());
if (typeof ssrModule.handler === 'function') {
ssrHandler = ssrModule.handler;
} else {
throw new AstroError(
`The server entrypoint doesn't have a handler. Are you sure this is the right file?`,
);
}
} catch (err) {
if (
(err as any).code === 'ERR_MODULE_NOT_FOUND' &&
(err as any).url === preview.serverEntrypoint.href
) {
throw new AstroError(
`The server entrypoint ${fileURLToPath(
preview.serverEntrypoint,
)} does not exist. Have you ran a build yet?`,
);
} else {
throw err;
}
}
// If the user didn't specify a host, it will already have been defaulted to
// "localhost" by getResolvedHostForHttpServer in astro core/preview/util.ts.
// The value `undefined` actually means that either the user set `options.server.host`
// to `true`, or they passed `--host` without an argument. In that case, we
// should listen on all IPs.
const host = process.env.HOST ?? preview.host ?? '0.0.0.0';
const port = preview.port ?? 4321;
const server = createServer(ssrHandler, host, port);
// If user specified custom headers append a listener
// to the server to add those headers to response
if (preview.headers) {
server.server.addListener('request', (_, res) => {
if (res.statusCode === 200) {
for (const [name, value] of Object.entries(preview.headers ?? {})) {
if (value) res.setHeader(name, value);
}
}
});
}
logListeningOn(preview.logger, server.server, host);
await new Promise<void>((resolve, reject) => {
server.server.once('listening', resolve);
server.server.once('error', reject);
server.server.listen(port, host);
});
return server;
};
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does createPreviewServer() do?
createPreviewServer() is a function in the astro codebase, defined in packages/integrations/node/src/preview.ts.
Where is createPreviewServer() defined?
createPreviewServer() is defined in packages/integrations/node/src/preview.ts at line 11.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free