diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/ssr/astro.config.mjs | 2 | ||||
-rw-r--r-- | examples/ssr/build.mjs | 12 | ||||
-rw-r--r-- | examples/ssr/package.json | 4 | ||||
-rw-r--r-- | examples/ssr/server/server.mjs | 48 |
4 files changed, 22 insertions, 44 deletions
diff --git a/examples/ssr/astro.config.mjs b/examples/ssr/astro.config.mjs index 481576db1..f6aba20ce 100644 --- a/examples/ssr/astro.config.mjs +++ b/examples/ssr/astro.config.mjs @@ -1,8 +1,10 @@ import { defineConfig } from 'astro/config'; import svelte from '@astrojs/svelte'; +import nodejs from '@astrojs/node'; // https://astro.build/config export default defineConfig({ + adapter: nodejs(), integrations: [svelte()], vite: { server: { diff --git a/examples/ssr/build.mjs b/examples/ssr/build.mjs deleted file mode 100644 index 168c3c55f..000000000 --- a/examples/ssr/build.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { execa } from 'execa'; - -const api = execa('npm', ['run', 'dev-api']); -api.stdout.pipe(process.stdout); -api.stderr.pipe(process.stderr); - -const build = execa('pnpm', ['astro', 'build', '--experimental-ssr']); -build.stdout.pipe(process.stdout); -build.stderr.pipe(process.stderr); -await build; - -api.kill(); diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 44eebe3a1..44ffc3bfa 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -7,12 +7,12 @@ "dev-server": "astro dev --experimental-ssr", "dev": "concurrently \"npm run dev-api\" \"astro dev --experimental-ssr\"", "start": "astro dev", - "build": "echo 'Run pnpm run build-ssr instead'", - "build-ssr": "node build.mjs", + "build": "astro build --experimental-ssr", "server": "node server/server.mjs" }, "devDependencies": { "@astrojs/svelte": "^0.0.2-next.0", + "@astrojs/node": "^0.0.1", "astro": "^0.25.0-next.2", "concurrently": "^7.0.0", "lightcookie": "^1.0.25", 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) => { |