Error tracking and monitoring for Node.js applications using Express, Fastify, or any HTTP framework.
Node.js Integration
Use @codmir/sdk/overseer for generic Node.js error tracking, or @codmir/sdk/express for Express-specific middleware.
npm install @codmir/sdkQuick Start
import * as Codmir from '@codmir/sdk/overseer';
Codmir.init({
dsn: process.env.CODMIR_DSN,
environment: process.env.NODE_ENV,
release: process.env.APP_VERSION,
});
// Capture errors
process.on('uncaughtException', (error) => {
Codmir.captureException(error);
Codmir.flush(2000).then(() => process.exit(1));
});
process.on('unhandledRejection', (reason) => {
Codmir.captureException(reason);
});Express
For Express applications, use the dedicated Express integration with built-in middleware:
import * as Codmir from '@codmir/sdk/express';
import express from 'express';
Codmir.init({ dsn: process.env.CODMIR_DSN });
const app = express();
app.use(Codmir.requestHandler());
app.use(Codmir.tracingHandler());
// ... your routes ...
app.use(Codmir.errorHandler());See the Express guide for full details.
Fastify
import * as Codmir from '@codmir/sdk/overseer';
Codmir.init({ dsn: process.env.CODMIR_DSN });
fastify.setErrorHandler((error, request, reply) => {
Codmir.captureException(error, {
request: {
method: request.method,
url: request.url,
headers: request.headers,
},
});
reply.status(500).send({ error: 'Internal Server Error' });
});Manual Capture
import {
captureException,
captureMessage,
setUser,
addBreadcrumb,
flush,
} from '@codmir/sdk/overseer';
setUser({ id: 'user-123', email: 'user@example.com' });
addBreadcrumb({
category: 'db.query',
message: 'SELECT * FROM users WHERE id = ?',
data: { duration: 45 },
});
try {
await riskyDatabaseOperation();
} catch (error) {
captureException(error, {
tags: { service: 'user-service' },
});
}
// Flush before process exit
await flush(2000);