Skip to main content

Next.js Pages Router

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

1. Install​

npm install eridu-tech hono @hono/node-server

2. Create the handler​

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

const router = new HttpRouter({
router: defaultHttpRouterAdapter(),
baseUrl: "/api",
});

router.endpoint({
url: "/hello/:name?",
method: ["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
handler: (args) => {
const { name } = args.req.params();
return args.text(
[
`METHOD: ${args.req.method},`,
"Hello from Next.js",
name ?? "",
"!",
]
.filter((str) => str !== "")
.join(" ")
.trim(),
);
},
});

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

File structure

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

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