npm create emdash@latest liefert ein vorkonfiguriertes Projekt, aber EmDash lässt sich auch auf eine Astro-Website aufpfropfen, die Sie bereits haben. Diese Anleitung führt durch jede Anforderung, die das Starter-Template normalerweise für Sie übernimmt — jede einzelne erzeugt einen verwirrenden Fehler, wenn sie fehlt, also arbeiten Sie die Checkliste der Reihe nach ab.
Voraussetzungen
- Astro 6 oder höher — aktualisieren Sie zuerst, wenn Sie auf einer älteren Major-Version sind (
npx @astrojs/upgrade) - Node.js v22.16.0 oder höher (ungerade Versionsnummern werden nicht unterstützt)
- Server-Output — EmDash liefert Inhalte zur Laufzeit, daher benötigt Ihr Projekt
output: "server"und einen Adapter (Node, Cloudflare, …)
Pakete installieren
Installieren Sie EmDash zusammen mit seinen erforderlichen Peer-Dependencies. React betreibt die Admin-Oberfläche unter /_emdash/admin; es ist auch erforderlich, wenn Ihre Website selbst kein React verwendet.
npm
npm install emdash @astrojs/react react react-dom pnpm
pnpm add emdash @astrojs/react react react-dom yarn
yarn add emdash @astrojs/react react react-dom Deployment auf Cloudflare? Fügen Sie auch die Cloudflare-Pakete hinzu — die Anleitung Auf Cloudflare bereitstellen behandelt sie im Detail:
npm install @astrojs/cloudflare @emdash-cms/cloudflare
Integrationen registrieren
Fügen Sie sowohl react() als auch emdash() zu Ihrem integrations-Array hinzu. Die Registrierung von @astrojs/react ist nicht optional: Das bloße Installieren des Pakets reicht nicht aus, und ohne die Integration baut der Admin zwar erfolgreich, hydratisiert aber nie — die Seite bleibt ewig bei “Loading EmDash…” stehen.
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
import react from "@astrojs/react";
import emdash, { local } from "emdash/astro";
import { sqlite } from "emdash/db";
export default defineConfig({
output: "server",
adapter: node({ mode: "standalone" }),
integrations: [
react(),
emdash({
database: sqlite({ url: "file:./data.db" }),
storage: local({
directory: "./uploads",
baseUrl: "/_emdash/api/media/file",
}),
}),
],
});
Live Collections Loader hinzufügen
Erstellen Sie src/live.config.ts, damit Astros Content-Layer EmDash-Inhalte auflösen kann. Ohne sie haben getEmDashCollection / getEmDashEntry keine Live-Collection, durch die sie routen können.
import { defineLiveCollection } from "astro:content";
import { emdashLoader } from "emdash/runtime";
export const collections = {
_emdash: defineLiveCollection({ loader: emdashLoader() }),
};
Ihre bestehende src/content.config.ts (dateibasierte Collections) funktioniert weiterhin daneben — siehe EmDash für Astro-Entwickler für das Zusammenspiel der beiden.
Installation überprüfen
-
Entwicklungsserver starten:
npm run dev -
Öffnen Sie
http://localhost:4321/_emdash/adminund schließen Sie den Setup-Assistenten ab. -
Erstellen und veröffentlichen Sie einen Beitrag, dann fragen Sie ihn von einer Seite ab:
--- import { getEmDashCollection } from "emdash"; const { entries: posts } = await getEmDashCollection("posts", { status: "published", }); --- <ul>{posts.map((post) => <li>{post.data.title}</li>)}</ul>
Auf Cloudflare bereitstellen
Folgen Sie Auf Cloudflare bereitstellen für das vollständige Setup (D1-Datenbank, R2-Medien-Bucket, Cron-Trigger). Zwei Dinge stolpern bestehende Projekte besonders:
- Verwenden Sie Cloudflare Workers, nicht Pages. Der
@astrojs/cloudflare-Adapter gibt einewrangler.jsonaus, die Pages nicht akzeptiert. Wenn Ihre Website derzeit auf Pages deployt, migrieren Sie sie zuerst zu Workers. - Bindings müssen in Ihrer
wrangler.jsoncexistieren. Mindestens benötigen Sie ein D1-Binding für die Datenbank und ein R2-Binding für Medien, passend zu den Binding-Namen in Ihrerastro.config.mjs.
Fehlerbehebung
| Symptom | Ursache | Lösung |
|---|---|---|
| Admin hängt bei “Loading EmDash…” | @astrojs/react nicht registriert | react() zu integrations hinzufügen |
Could not resolve "astro:content" in live.config.ts | Astro älter als 6 | Astro aktualisieren |
getEmDashCollection gibt einen Fehler zurück | src/live.config.ts fehlt | Live Collections Loader hinzufügen |
| Build-Fehler wegen unaufgelöster Pakete | Peer-Dependencies nicht installiert | @astrojs/react, react, react-dom explizit installieren |
| Inhaltsänderungen erscheinen nicht | Seite ist vorgerendert | export const prerender = false auf dynamischen Seiten setzen |
Nächste Schritte
- EmDash für Astro-Entwickler — Wie EmDash-Konzepte auf das abbilden, was Sie bereits kennen
- Mit Inhalten arbeiten — Inhalte abfragen und rendern
- Auf Cloudflare bereitstellen — Die Website in Produktion bringen