Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
An ExpressJS middleware to handle custom errors.
npm install --save tl-errors
The first step is to create your configuration file. Here you can define your custom errors, redirection urls and excluded requests.
This package comes with a default configuration that you can extend or overwrite.
const config = {
// Custom application errors
errors: [
// This error will be added to the component errors list
{
name: 'EnhanceYourCalmError',
message: 'Breath in... Breath out...'
code: 420
},
// These errors will overwrite the default errors with new messages
{
name: 'BadRequestError',
message: 'The request could not be understood by the server due to malformed syntax.'
code: 400
}, {
name: 'ConflictError',
message: 'This document is already registered.',
code: 409
}
],
// Application custom error handlers
handlers: {
// Handle validations errors with BadRequestError
'ValidationError': 'BadRequestError',
// Handle errors with code 11000 with MongoDuplicatedError
'11000': 'DuplicatedEntityError'
},
// Every failed HTTP request to these urls will be terminated
exclude: /^\/(assets|api)\//i,
// Redirection urls
redirect: {
error: '/error?err=',
lost: '/lost?url='
},
// Function to use for debugging
debug: err => {
console.log('START ERROR LOG:', new Date());
console.log(err);
console.log('END ERROR LOG:', new Date());
},
// Condition to debug an error
shouldDebug: err => err.code > 399
};
To use the package you must configure it and then bind it to the express application.
const errors = require('tl-errors');
const express = require('express');
const app = express();
// Configure the module
errors.config(config);
// Register other middlewares
// app.use(...);
// Optionally, use the tl-errors not found (404) middleware
app.use(errors.notFoundMiddleware);
// Lastly, bind the tl-errors handler
app.use(errors.handler);
const errors = require('tl-errors');
const { BadRequestError } = errors;
module.exports = (router, db) => {
const User = db.model('user');
/**
* Creates a user.
*/
router.post('/', async (req, res, next) => {
try {
const user = await User.create(req.body);
if (!user) {
throw new BadRequestError('The user could not be created');
}
res.status(HTTP_CODE_CREATED).json(user._id);
} catch (err) {
// Any ValidationError caught here will be handled with BadRequestError.
// Any error with code 11000 caught here will be handled with
// DuplicatedEntityError.
next(err);
}
});
}
Every error triggered in a middleware will be caught inside the component.
Read the library docs for the methods specification.
FAQs
Error manangement middleware for ExpressJS
The npm package tl-errors receives a total of 2 weekly downloads. As such, tl-errors popularity was classified as not popular.
We found that tl-errors demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.