err-fixit
is a lightweight and efficient npm package for handling various types of errors in a MERN stack application. It provides structured error responses for MongoDB, Express and general application errors. This package is designed to work seamlessly with both CommonJS and ES Modules.
- Handles duplicate key errors from MongoDB
- Handles Mongoose validation errors
- Handles cast errors (invalid ObjectId and so on)
- Provides a structured response with a
status: false
field - Supports both CommonJS (
require
) and ES Modules (import
)
Error Type | Description |
---|---|
Duplicate Key Error (code: 11000 ) |
Happens when inserting a duplicate value in a unique field. |
CastError | Occurs when an invalid ObjectId or incorrect type is used. |
ValidationError | Mongoose validation errors. |
Unknown Error | Any other unhandled errors. |
To install the package run:
npm i err-fixit
const express = require("express");
const { errorHandler } = require("err-fixit");
const app = express();
app.get("/", (req, res, next) => {
const error = new Error("something went wrong!");
next(error);
});
app.use((err, req, res, next) => {
const errorResponse = errorHandler(err);
return res.status(errorResponse.errorCode || 500).json(errorResponse);
});
app.listen(3000, () => console.log("Server running on port 3000"));
First, ensure your package.json
includes:
{
"type": "module"
}
Then, use the following code:
import express from "express";
import { errorHandler } from "err-fixit";
const app = express();
app.get("/", (req, res, next) => {
const error = new Error("something went wrong");
next(error);
});
app.use((err, req, res, next) => {
const errorResponse = errorHandler(err);
return res.status(errorResponse.errorCode || 500).json(errorResponse);
});
app.listen(3000, () => console.log("Server running on port 3000"));
If a duplicate key error occurs (e.g. a unique field constraint violation) the package will return:
{
"status": false,
"message": "'email' must be unique",
"field": "email",
"errorCode": 11000
}
If an invalid ObjectId is used in a MongoDB query, the package will return:
{
"status": false,
"message": "invalid value provided for field '_id'",
"field": "_id",
"errorCode": 400
}
If Mongoose validation fails, the package will return:
{
"status": false,
"message": "validation failed",
"errors": [
{
"field": "email",
"message": "email is required"
}
],
"errorCode": 400
}
If an unknown error occurs, the package provides a general response:
{
"status": false,
"message": "an unknown error occurred",
"errorCode": 500
}
This package is released under the MIT License.
Created by Khaled Md Saifullah
Contributions are welcome! Feel free to submit a pull request or open an issue on GitHub.