Adding Express Middlewares
Catalyst uses Express.js under the hood, allowing you to add custom middlewares in server/server.js.
Basic Setup
Export an addMiddlewares function that receives the Express app instance:
server/server.js
import express from "express";
export function addMiddlewares(app) {
// Add your middlewares here
}
Examples
Serving Static Files
server/server.js
import express from "express";
import path from "path";
export function addMiddlewares(app) {
app.use("/assets", express.static(path.join(__dirname, "../src/static")));
app.use("/favicon.ico", express.static(path.join(__dirname, "../public/favicon.ico")));
}
Adding Custom Headers
server/server.js
export function addMiddlewares(app) {
app.use((req, res, next) => {
res.setHeader("X-Custom-Header", "value");
next();
});
}
Request Logging
server/server.js
import morgan from "morgan";
export function addMiddlewares(app) {
app.use(morgan("combined"));
}
Authentication Middleware
server/server.js
export function addMiddlewares(app) {
app.use((req, res, next) => {
const token = req.headers.authorization;
if (token) {
req.user = verifyToken(token);
}
next();
});
}
Middleware Order
Middlewares execute in the order they are added. Place authentication and logging middlewares before route handlers:
server/server.js
export function addMiddlewares(app) {
// 1. Logging (runs first)
app.use(morgan("combined"));
// 2. Static files
app.use("/assets", express.static("./public"));
// 3. Authentication
app.use(authMiddleware);
// 4. Custom headers
app.use(headerMiddleware);
}