Skip to main content

Next.js Pages Router

HttpRouter can be used directly with Next.js Pages Router route handlers.

1. Install

npm install @daiso-tech/core hono @hono/node-server

2. Create the handler

// pages/api/[[...route]].ts
import {
HttpRouter,
HttpRes,
defaultHttpRouterAdapter,
} from "@daiso-tech/core/http-router";
import { getRequestListener } from "@hono/node-server";

const router = new HttpRouter({ router: defaultHttpRouterAdapter });

router.endpoint({
url: "/api/hello",
method: "GET",
handler: async () => HttpRes.text("Hello from Next.js!"),
});

export default getRequestListener((request: Request) => router.fetch(request));

File structure

.
├── pages
│ └── api
│ └── [[...route]]
│ └── route.ts
├── package.json
└── next.config.js

3. Develop

npm run dev

4. Build

npm run build

5. Start

npm start
info

In order for this to work with the Pages Router, disable Vercel Node.js helpers by setting an environment variable in your project dashboard or in your .env file:

NODEJS_HELPERS=0

Reference: Next.js Pages Router API Routes