Zum Inhalt springen

Next.js ​

Next.js ist ein flexibles React-Framework, das dir Bausteine zum Erstellen schneller Webanwendungen bietet.

Du kannst Hono auf Next.js mit der Node.js-Laufzeitumgebung ausführen.
Auf Vercel lässt sich Hono zusammen mit Next.js einfach über Vercel Functions bereitstellen.

1. Einrichtung ​

Für Next.js steht eine Projektvorlage zur Verfügung. Starte dein Projekt mit dem Befehl „create-hono“. Wähle für dieses Beispiel die Vorlage nextjs aus.

sh
npm create hono@latest my-app
sh
yarn create hono my-app
sh
pnpm create hono my-app
sh
bun create hono@latest my-app
sh
deno init --npm hono my-app

Wechsle nach my-app und installiere die Abhängigkeiten.

sh
cd my-app
npm i
sh
cd my-app
yarn
sh
cd my-app
pnpm i
sh
cd my-app
bun i

2. Hello World ​

Wenn du den App Router verwendest, bearbeite app/api/[[...route]]/route.ts. Weitere Optionen findest du im Abschnitt Unterstützte HTTP-Methoden.

ts
import { Hono } from 'hono'
import { handle } from '@hono/vercel'

const app = new Hono().basePath('/api')

app.get('/hello', (c) => {
  return c.json({
    message: 'Hello Next.js!',
  })
})

export const GET = handle(app)

`handle` comes from the `@hono/vercel` package, which the starter installs. On an existing project, add it with `npm i @hono/vercel`.
export const POST = handle(app)

3. Ausführen ​

Starte den Entwicklungsserver lokal. Öffne anschließend http://localhost:3000 in deinem Webbrowser.

sh
npm run dev
sh
yarn dev
sh
pnpm dev
sh
bun run dev

Momentan gibt /api/hello nur JSON zurück. Wenn du eine React-Oberfläche entwickelst, kannst du mit Hono eine Fullstack-Anwendung erstellen.

4. Bereitstellung ​

Wenn du ein Vercel-Konto hast, kannst du die Anwendung durch Verknüpfen des Git-Repositorys bereitstellen.

Pages Router ​

Wenn du den Pages Router verwendest, musst du zunächst den Node.js-Adapter installieren.

sh
npm i @hono/node-server
sh
yarn add @hono/node-server
sh
pnpm add @hono/node-server
sh
bun add @hono/node-server

Anschließend kannst du die aus @hono/node-server importierte Funktion getRequestListener in pages/api/[[...route]].ts verwenden.

ts
import { getRequestListener } from '@hono/node-server'
import { Hono } from 'hono'
import type { PageConfig } from 'next'

export const config: PageConfig = {
  api: {
    bodyParser: false,
  },
}

const app = new Hono().basePath('/api')

app.get('/hello', (c) => {
  return c.json({
    message: 'Hello Next.js!',
  })
})

export default getRequestListener(app.fetch)

Damit dies mit dem Pages Router funktioniert, musst du die Node.js-Helfer von Vercel deaktivieren, indem du eine Umgebungsvariable im Projekt-Dashboard oder in deiner .env-Datei festlegst.

text
NODEJS_HELPERS=0

Veröffentlicht unter der MIT-Lizenz.