server/index.ts
// #region Global Imports
import next from "next";
import express from "express";
import path from "path";
import nextI18NextMiddleware from "next-i18next/middleware";
// #endregion Global Imports
// #region Local Imports
import nextI18next from "./i18n";
import routes from "./routes";
import devProxy from "./proxy";
// #endregion Local Imports
const port = parseInt(process.env.PORT || "3000", 10);
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handler = routes.getRequestHandler(app);
app.prepare().then(() => {
const server = express();
app.setAssetPrefix(process.env.STATIC_PATH);
server.use(express.static(path.join(__dirname, "../public/static")));
server.use(nextI18NextMiddleware(nextI18next));
if (process.env.PROXY_MODE === "local") {
// eslint-disable-next-line global-require
const proxyMiddleware = require("http-proxy-middleware");
Object.keys(devProxy).forEach(context => {
server.use(proxyMiddleware(context, devProxy[context]));
});
}
server.all("*", (req, res) => handler(req, res));
server.listen(port);
// eslint-disable-next-line no-console
console.log(
`> Server listening at http://localhost:${port} as ${
dev ? "development" : process.env.NODE_ENV
}`
);
});