@bugban/node
v1.3.0
Published
Bugban SDK for Node.js — uncaught exceptions, rejections and slow database queries.
Downloads
729
Maintainers
Readme
@bugban/node
Bugban error and performance monitoring for Node.js.
npm install @bugban/nodeUsing a framework? @bugban/express and @bugban/nestjs build on this package and also hook the framework's own error path, which uncaught-exception handlers never see.
Setup
import { initNode } from '@bugban/node';
initNode({
apiKey: process.env.BUGBAN_API_KEY,
host: 'https://bugban.online',
release: process.env.APP_VERSION,
environment: process.env.NODE_ENV,
});Uncaught exceptions and unhandled rejections are now reported automatically, along with your app name and version read from package.json and the Node version you are running.
Slow database queries
Node has no single database layer, so each client gets its own hook. Queries slower than the threshold appear in the project's Performance tab, next to those from any other language.
import { bugbanPrisma, bugbanTypeOrmLogger, bugbanKnex, bugbanPg, recordQuery } from '@bugban/node';
// Prisma
prisma.$use(bugbanPrisma());
// TypeORM
new DataSource({ ...options, logger: bugbanTypeOrmLogger() });
// Knex
bugbanKnex(knex);
// node-postgres
bugbanPg(pool);
// Anything else
recordQuery({ sql, durationMs, bindings, connection: 'mysql' });The threshold defaults to 1000 ms:
initNode({
apiKey: '…',
slowQueryMs: 500, // or BUGBAN_SLOW_QUERY_MS
captureQueries: true, // or BUGBAN_CAPTURE_QUERIES=false
});Only queries at or above the threshold are sent, so hooking every query is cheap.
Reporting errors yourself
import { capture } from '@bugban/node';
try {
await job.run();
} catch (err) {
capture(err, { handled: true, context: { job: job.name } });
}Before the process exits
Delivery is fire-and-forget, so a short-lived script should wait for it:
import { Bugban } from '@bugban/node';
await Bugban.flush();Long-running servers do not need this — the SDK also flushes on beforeExit.
Compatibility
Node 12 and newer, ESM and CommonJS. Tested on 12, 14, 16, 18, 20 and 22. On versions without global fetch it falls back to the http/https module automatically.
Everything else — console.error capture, redaction, sampling, beforeSend — comes from @bugban/js. See its README for the full option list.
License
MIT
