@erangamadhushan/express-advanced-error-kit
v1.5.1
Published
Advanced TypeScript error handling middleware for Express applications.
Downloads
777
Maintainers
Readme
@erangamadhushan/express-advanced-error-kit
Advanced TypeScript-based error handling middleware for Express.js.
✨ Features
- Async handler wrapper
- Custom
ApiErrorclass - Global error middleware
- 404 Not Found middleware
- Logger integration (Pino, Winston, custom)
- MongoDB duplicate key smart parsing
- Zod validation error formatting
- Production-safe stack handling
- ESM + CommonJS support
- Full TypeScript support
📦 Installation
npm install @erangamadhushan/express-advanced-error-kit🚀 Quick Start
import express from "express";
import {
asyncHandler,
ApiError,
notFoundMiddleware,
errorMiddleware,
} from "@erangamadhushan/express-advanced-error-kit";
const app = express();
app.use(express.json());
app.get(
"/error",
asyncHandler(async () => {
throw new ApiError(400, "Something went wrong");
}),
);
app.use(notFoundMiddleware);
app.use(errorMiddleware());
app.listen(5000);🧠 Smart MongoDB Error Handling
Duplicate key errors are automatically formatted:
// Mongo duplicate key error
{
code: 11000,
keyValue: { email: "[email protected]" }
}Response:
{
"success": false,
"message": "email already exists"
}🧾 Zod Validation Formatting
If using Zod:
throw new ZodError([...]);Response:
{
"success": false,
"message": "email: Invalid email"
}🪵 Logger Integration
Use any logger:
import pino from "pino";
const logger = pino();
app.use(
errorMiddleware({
logger: logger.error.bind(logger),
showStack: false,
}),
);📚 Middleware Order (Important)
app.use(routes);
........
........
app.use(notFoundMiddleware);
app.use(errorMiddleware());🧩 Creating Custom Errors
throw new ApiError(404, "User not found");Also You can extend it:
class ValidationError extends ApiError {
constructor(message: string) {
super(400, message);
}
}⚙️ Configuration Options
errorMiddleware({
logger?: (error: any) => void;
showStack?: boolean;
});🛡 Production Behavior
- Stack traces hidden automatically in production
- Clean JSON response format
- Centralized error control
🔄 Automated Releases
- Conventional commits
- semantic-release
- GitHub Actions CI
- Automatic versioning and changelog generation
