Integrations

Connect

Copied
var connect = require("connect");
var Raven = require("raven");

// Must configure Raven before doing anything else with it
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0").install();

function mainHandler(req, res) {
  throw new Error("Broke!");
}

function onError(err, req, res, next) {
  // The error id is attached to `res.sentry` to be returned
  // and optionally displayed to the user for support.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
}

connect(
  // The request handler be the first item
  Raven.requestHandler(),

  connect.bodyParser(),
  connect.cookieParser(),
  mainHandler,

  // The error handler must be before any other error middleware
  Raven.errorHandler(),

  // Optional fallthrough error handler
  onError
).listen(3000);

Express

Copied
var app = require("express")();
var Raven = require("raven");

// Must configure Raven before doing anything else with it
Raven.config("__DSN__").install();

// The request handler must be the first middleware on the app
app.use(Raven.requestHandler());

app.get("/", function mainHandler(req, res) {
  throw new Error("Broke!");
});

// The error handler must be before any other error middleware
app.use(Raven.errorHandler());

// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
  // The error id is attached to `res.sentry` to be returned
  // and optionally displayed to the user for support.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
});

app.listen(3000);

Koa

Copied
var koa = require("koa");
var Raven = require("raven");

var app = koa();
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0").install();

app.on("error", function(err) {
  Raven.captureException(err, function(err, eventId) {
    console.log("Reported error " + eventId);
  });
});

app.listen(3000);

Loopback

If you’re using Loopback 2.x LTS, make sure you’ve migrated to strong-error-handler, otherwise no errors will get to raven-node.

Configure raven-node as early as possible:

Copied
// server/server.js

const Raven = require("raven");
Raven.config("__DSN__").install();

Add Raven.errorHandler as a Loopback middleware:

Copied
// server/middleware.json

"final:after": {
  "raven#errorHandler": {},
  "strong-error-handler": {
    "debug": false,
    "log": false
  }
}

Sails

Copied
// config/http.js

var Raven = require("raven");
Raven.config("__DSN__").install();

module.exports.http = {
  middleware: {
    // Raven's handlers has to be added as a keys to http.middleware config object
    requestHandler: Raven.requestHandler(),
    errorHandler: Raven.errorHandler(),

    // And they have to be added in a correct order to middlewares list
    order: [
      // The request handler must be the very first one
      "requestHandler",
      // ...more middlewares
      "router",
      // The error handler must be after router, but before any other error middleware
      "errorHandler",
      /// ...remaining middlewares
    ],
  },
};