@bugban/express
v1.2.0
Published
Bugban SDK for Express — error middleware and per-request context capture.
Downloads
269
Maintainers
Readme
@bugban/express
Bugban error and performance monitoring for Express.
npm install @bugban/expressWhy the adapter
Express does not let a route's error reach uncaughtException — it hands it to the error-middleware chain instead. So a global handler alone reports nothing when a route throws.
Setup
Order matters: the request handler goes before your routes, the error handler after them.
import express from 'express';
import { initExpress, bugbanRequestHandler, bugbanErrorHandler } from '@bugban/express';
initExpress({
apiKey: process.env.BUGBAN_API_KEY,
host: 'https://bugban.online',
release: process.env.APP_VERSION,
environment: process.env.NODE_ENV,
});
const app = express();
app.use(bugbanRequestHandler()); // first
app.get('/orders/:id', async (req, res) => {
res.json(await getOrder(req.params.id));
});
app.use(bugbanErrorHandler()); // lastEach report carries the method, the route pattern (/orders/:id, not the concrete URL — that is what groups errors usefully) and the status code.
Attaching the user
req.user is used automatically when present. Otherwise say where to look:
app.use(bugbanRequestHandler({
user: (req) => ({ id: req.session?.userId, email: req.session?.email }),
breadcrumbs: true, // record every request, not just failures
}));What counts as an error
Deliberate 4xx responses (validation, not found) are not bugs, so they are skipped by default. Anything without a status, or 5xx, is reported. To decide yourself:
app.use(bugbanErrorHandler({
shouldCapture: (err) => err.status !== 429,
}));The middleware always calls next(err), so your own error handler still runs and still shapes the response.
Slow database queries
Hook your database client with @bugban/node (bundled in) — Prisma, TypeORM, Knex and pg are supported out of the box.
License
MIT
