Why are my async/await errors not being caught properly in my Node.js Express middleware?

1 week ago 19
ARTICLE AD BOX

I am building a REST API using Node.js with Express, and I’m running into an issue where errors thrown inside an async route handler are not being caught by my error-handling middleware.

const express = require('express'); const app = express(); app.get('/user', async (req, res, next) => { const user = await getUserFromDatabase(req.query.id); if (!user) { throw new Error('User not found'); } res.json(user); }); app.use((err, req, res, next) => { console.error(err.message); res.status(500).json({ error: err.message }); }); function getUserFromDatabase(id) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(null); // simulate missing user }, 100); }); } app.listen(3000, () => console.log('Server running'));
Read Entire Article