Product
Introducing Enhanced Alert Actions and Triage Functionality
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
express-async-handler
Advanced tools
Package description
The express-async-handler package is a middleware for Express.js that simplifies error handling in asynchronous route handlers. It allows you to write asynchronous code without having to manually catch errors and pass them to the next middleware.
Simplified Async Error Handling
This feature allows you to wrap your asynchronous route handlers with the asyncHandler function. If an error occurs, it will automatically be passed to the next middleware, simplifying error handling.
const express = require('express');
const asyncHandler = require('express-async-handler');
const app = express();
app.get('/', asyncHandler(async (req, res, next) => {
const data = await someAsyncFunction();
res.send(data);
}));
app.use((err, req, res, next) => {
res.status(500).send({ error: err.message });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Integration with Existing Middleware
This feature demonstrates how express-async-handler can be integrated with existing middleware like body parsers. It ensures that any errors in the asynchronous route handlers are properly caught and handled.
const express = require('express');
const asyncHandler = require('express-async-handler');
const app = express();
app.use(express.json());
app.post('/data', asyncHandler(async (req, res, next) => {
const data = await saveData(req.body);
res.status(201).send(data);
}));
app.use((err, req, res, next) => {
res.status(500).send({ error: err.message });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
async-express is another package that provides similar functionality by allowing you to use async/await in your Express route handlers. It automatically catches errors and passes them to the next middleware. Compared to express-async-handler, async-express offers a similar level of simplicity and ease of use.
express-promise-router is a drop-in replacement for Express's Router that allows you to use promises (including async/await) in your route handlers. It automatically handles rejected promises and passes errors to the next middleware. This package is more comprehensive as it replaces the entire Router, whereas express-async-handler is a middleware function.
Readme
Simple middleware for handling exceptions inside of async express routes and passing them to your express error handlers.
npm install --save express-async-handler
or
yarn add express-async-handler
const asyncHandler = require('express-async-handler')
express.get('/', asyncHandler(async (req, res, next) => {
const bar = await foo.findAll();
res.send(bar)
}))
Without express-async-handler
express.get('/',(req, res, next) => {
foo.findAll()
.then ( bar => {
res.send(bar)
} )
.catch(next); // error passed on to the error handling route
})
import asyncHandler from "express-async-handler"
FAQs
Express Error Handler for Async Functions
We found that express-async-handler 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.
Product
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.