UNPKG

myex-cli

Version:

Opinionated Express.js framework with CLI tools

55 lines (48 loc) 1.7 kB
import { logger } from '../utils/logger.js'; /** * Configure error handling middleware for the Express app * @param {import('express').Application} app - Express application */ export const configureErrorHandlers = (app) => { // 404 Not Found handler app.use(notFoundHandler); // Global error handler app.use(errorHandler); }; /** * Handle 404 not found errors * @param {import('express').Request} req - Express request object * @param {import('express').Response} res - Express response object * @param {import('express').NextFunction} next - Express next function */ export const notFoundHandler = (req, res, next) => { const error = new Error(`Not Found - ${req.originalUrl}`); error.status = 404; next(error); }; /** * Global error handler for all errors in the application * @param {Error} err - Error object * @param {import('express').Request} req - Express request object * @param {import('express').Response} res - Express response object * @param {import('express').NextFunction} next - Express next function */ export const errorHandler = (err, req, res, next) => { // Set default status if not set const statusCode = err.status || 500; // Log error details if (statusCode === 500) { logger.error(`[${req.method}] ${req.path} >> ${err.stack}`); } else { logger.warn(`[${req.method}] ${req.path} >> ${err.message}`); } // Determine what error information to expose based on environment const isDevelopment = process.env.NODE_ENV === 'development'; // Send error response res.status(statusCode).json({ status: 'error', statusCode, message: err.message, ...(isDevelopment && { stack: err.stack }), }); };