
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Node.js client for airbrake.io.
npm install airbrake
The common use case for this module is to catch all 'uncaughtException'
events on the process
object and send them to Airbrake:
var airbrake = require('airbrake').createClient("your project ID", "your api key");
airbrake.handleExceptions();
throw new Error('I am an uncaught exception');
Please note that the above will re-throw the exception after it has been successfully delivered to Airbrake, causing your process to exit with status 1.
This can optionally be disabled by passing false to handleExceptions
:
airbrake.handleExceptions(false);
You probably never want to use this, unless you fully understand the problems with recovering from exceptions.
If you want more control over the delivery of your errors, you can also manually submit errors to Airbrake.
var airbrake = require('airbrake').createClient("your project ID", "your api key");
var err = new Error('Something went terribly wrong');
airbrake.notify(err, function(err, url) {
if (err) throw err;
// Error has been delivered, url links to the error in airbrake
});
By default only the errors from the production environment will get reported,
so make sure to put production
in your NODE_ENV
.
A custom error handler will need to be set for Express:
Express 4.X
var airbrake = require('airbrake').createClient("your project ID", "your api key");
app.use(airbrake.expressHandler());
Express 3.X
var airbrake = require('airbrake').createClient("your project ID", "your api key");
app.use(app.router);
app.use(airbrake.expressHandler());
Express 2.X
var airbrake = require('airbrake').createClient("your project ID", "your api key");
app.error(airbrake.expressHandler());
This screenshot shows an Airbrake error send from this module:
uncaughtException
eventsnotify()
callbackThe notify()
method automatically adds the following context information to
each delivered error:
err.type
string if set, or 'Error'
)err.message
string)err.stack
as parsed by stack-trace)err.url
, see airbrake.url
);err.component
string if set);err.action
string if set);process.env
, merged all other properties of err
)err.params
object if set)err.session
object if set)airbrake.projectRoot
string if set)airbrake.env
string)You can add additional context information by modifying the error properties listed above:
var airbrake = require('airbrake').createClient("your project ID", "your api key");
var http = require('http');
http.createServer(function(req, res) {
if (req.headers['X-Secret'] !== 'my secret') {
var err = new Error('403 - Permission denied');
req.writeHead(403);
req.end(err.message);
err.url = req.url;
err.params = {ip: req.socket.remoteAddress};
airbrake.notify(err);
}
});
Unfortunately uncaughtException
events cannot be traced back to particular
requests, so you should still try to handle errors where they occur.
This client supports Airbrake's deployment tracking:
var airbrake = require('airbrake').createClient("your project ID", "your api key");
var deployment = {
rev: '98103a8fa850d5eaf3666e419d8a0a93e535b1b2',
repo: 'git@github.com:felixge/node-airbrake.git',
};
airbrake.trackDeployment(deployment, function(err, params) {
if (err) {
throw err;
}
console.log('Tracked deployment of %s to %s', params.rev, params.env);
});
Check out the airbrake.trackDeployment()
API docs below for a list of all
options.
Airbrake.createClient()
returns a new Airbrake instance.
Options
projectId
- Your application's Airbrake project ID.key
- Your application's Airbrake API key.env
- The name of the server environment this is running in.Your application's Airbrake project ID.
Your application's Airbrake API key.
The name of the server environment this is running in.
The base url for errors. If err.url
is not set, airbrake.host
is used
instead. If err.url
is a relative url starting with '/'
, it is appended
to airbrake.host
. If err.url
is an absolute url, airbrake.host
is ignored.
The root directory of this project.
The version of this app. Set to a semantic version number, or leave unset.
The protocol to use.
Do not post to Airbrake when running in these environments.
The timeout after which to give up trying to notify Airbrake in ms.
The HTTP/HTTPS proxy to use when making requests.
Additional request options that are merged with the default set of options that are passed to request
during notify()
and trackDeployment()
.
Names of environment variables to send.
Names of environment variables to filter out.
Registers a process.on('uncaughtException')
listener. When an uncaught
exception occurs, the error is sent to Airbrake, and then re-thrown to
kill the process.
A custom error handler that is used with Express. Integrate with Express
middleware using app.use()
.
Options:
disableUncaughtException
: Disables re-throwing and killing process on uncaught exception.Sends the given err
to airbrake.
The callback parameter receives two arguments, err, url
. err
is set if
the delivery to Airbrake failed.
If no cb
is given, and the delivery fails, an error
event is emitted. If
there is no listener for this event, node will kill the process as well. This
is done to avoid silent error delivery failure.
Notifies Airbrake about a deployment. params
is an object with the following
options:
env:
The environment being deployed, defaults to airbrake.env
.user:
The user doing the deployment, defaults to process.env.USER
.repo:
The github url of this repository. Defaults to ''
.rev:
The revision of this deployment. Defaults to ''
.Besides bug fixes, we're happy to accept patches for:
repo
and rev
from the local git repository when
calling airbrake.trackDeployment()
. This can be done via exec()
, but must
not be done when specifying repo
/ rev
by hand, or if they are set to
false
.If you have other feature ideas, please open an issue first, so we can discuss it.
Originally created by Felix Geisendörfer.
See all contributors.
MIT
[v1.0.0][v1.0.0] (March 2, 2016)
FAQs
DEPRECATION: please use @airbrake/node instead (https://www.npmjs.com/package/@airbrake/node). A Node.js notifier for Airbrake, the leading exception reporting service.
The npm package airbrake receives a total of 507 weekly downloads. As such, airbrake popularity was classified as not popular.
We found that airbrake demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers 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.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.