Node Airbrake is a Node.js notifier for Airbrake, the leading exception reporting service. The library provides minimalist API that enables the ability to send any Node exception to the Airbrake dashboard. Node Airbrake provides out-of-box integration with the Express web framework.
Add the Node Airbrake package to your
Invoke the following command from your terminal:
npm install airbrake
This is the minimal example that you can use to test Node Airbrake with your
project. The common use case for this module is to catch all
events on the
process object and send them to Airbrake:
var airbrake =;airbrake;throw 'I am an uncaught exception';
Note: 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
There may be some errors thrown in your application that you're not interested in sending to Airbrake, such as errors thrown by 3rd-party libraries.
The Airbrake notifier makes it simple to ignore this chaff while still processing legitimate errors. Add filters to the notifier by providing filter functions to
addFilter accepts the entire error notice to be sent to Airbrake, and provides access to the
session values submitted with the notice, as well as the single-element
errors array with its
backtrace element and associated backtrace lines.
The return value of the filter function determines whether or not the error notice will be submitted.
An error notice must pass all provided filters to be submitted.
In the following example errors triggered with a message of 'this should not be posted to airbrake' will be ignored:
Filters can be also used to modify notice payload, e.g. to set environment and application version:
If you want more control over the delivery of your errors, you can also manually submit errors to Airbrake:
var airbrake = ;var err = 'Something went terribly wrong';airbrake;
By default only the errors from the production environment will get reported,
so make sure to put
production in your
categorizing how severe an error is. By default, it's set to
redefine severity, simply set an error's
severity property. For example:
var err = ;errseverity = 'critical';airbrake;
The library provides out-of-box integration with the Express framework. It
supports even old Express versions (starting from
2.x). Select your version
below and configure accordingly.
var airbrake = ;app;
var airbrake = ;app;app;
var airbrake = ;app;
The library provides out-of-box integration with the hapi framework. To integrate Airbrake with a hapi application simply install our handler:
const Hapi = ;const server = ;const Airbrake =;Airbrakeenv = 'production';server;
notify() method automatically adds the following context information to
each delivered error:
err.typestring if set, or
err.stackas parsed by stack-trace)
err.componentstring if set);
err.actionstring if set);
process.env, merged all other properties of
err.paramsobject if set)
err.sessionobject if set)
airbrake.projectRootstring if set)
You can add additional context information by modifying the error properties listed above:
var airbrake = ;var http = ;http;
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 = ;var deployment =rev: '98103a8fa850d5eaf3666e419d8a0a93e535b1b2'repo: 'firstname.lastname@example.org:felixge/node-airbrake.git';airbrake;
Check out the
airbrake.trackDeployment() API docs below for a list of all
Airbrake.createClient() returns a new Airbrake instance.
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
err.url is a relative url starting with
'/', it is appended
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.
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
Names of environment variables to send.
Names of environment variables to filter out.
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
disableUncaughtException: Disables re-throwing and killing process on uncaught exception.
Sends the given
err to airbrake.
The callback parameter receives two arguments,
err is set if
the delivery to Airbrake failed.
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
env:The environment being deployed, defaults to
user:The user doing the deployment, defaults to
repo:The github url of this repository. Defaults to
git config --get remote.origin.url.
rev:The revision of this deployment. Defaults to
git rev-parse HEAD.
The maximum size of an exception is 64KB. Exceptions that exceed this limit will be truncated to fit the size.
The library was originally created by Felix Geisendörfer. The project uses the MIT License. See LICENSE.md for details.