import { createServer } from "http";
import { parse } from "url";
import * as next from "next";
import { flattenRoutes } from "./src/routes";
import { handleRequest } from "nextjs-typed-router";
const dev = process.env.NODE_ENV !== "production";
const app = next({
dev,
dir: "./src"
});
const handle = app.getRequestHandler();
app.prepare().then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url as string, true);
const { pathname, query } = parsedUrl;
handleRequest(pathname, flattenRoutes)(
data =>
app.render(req, res, data.filename, {
...query,
...data.params
}),
() => handle(req, res, parsedUrl)
);
})
.addListener("error", (err: any) => {
console.log(err);
throw err;
})
.listen(3000, () => {
console.log("> Ready on http://localhost:3000");
});
});