diff options
Diffstat (limited to 'examples/ssr/server/server.mjs')
-rw-r--r-- | examples/ssr/server/server.mjs | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/examples/ssr/server/server.mjs b/examples/ssr/server/server.mjs index c6f35685e..bed49b749 100644 --- a/examples/ssr/server/server.mjs +++ b/examples/ssr/server/server.mjs @@ -1,43 +1,31 @@ import { createServer } from 'http'; import fs from 'fs'; import mime from 'mime'; -import { loadApp } from 'astro/app/node'; -import { polyfill } from '@astrojs/webapi'; import { apiHandler } from './api.mjs'; - -polyfill(globalThis); +import { handler as ssrHandler } from '../dist/server/entry.mjs'; const clientRoot = new URL('../dist/client/', import.meta.url); -const serverRoot = new URL('../dist/server/', import.meta.url); -const app = await loadApp(serverRoot); async function handle(req, res) { - const route = app.match(req); + ssrHandler(req, res, async () => { + // Did not match an SSR route - if (route) { - /** @type {Response} */ - const response = await app.render(req, route); - const html = await response.text(); - res.writeHead(response.status, { - 'Content-Type': 'text/html; charset=utf-8', - 'Content-Length': Buffer.byteLength(html, 'utf-8'), - }); - res.end(html); - } else if (/^\/api\//.test(req.url)) { - return apiHandler(req, res); - } else { - let local = new URL('.' + req.url, clientRoot); - try { - const data = await fs.promises.readFile(local); - res.writeHead(200, { - 'Content-Type': mime.getType(req.url), - }); - res.end(data); - } catch { - res.writeHead(404); - res.end(); + if (/^\/api\//.test(req.url)) { + return apiHandler(req, res); + } else { + let local = new URL('.' + req.url, clientRoot); + try { + const data = await fs.promises.readFile(local); + res.writeHead(200, { + 'Content-Type': mime.getType(req.url), + }); + res.end(data); + } catch { + res.writeHead(404); + res.end(); + } } - } + }); } const server = createServer((req, res) => { |