Integrations

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 ID of error events captured by the Sentry error middleware is attached to `res.sentry`.
  // You can use this ID for debugging, or to correlate requests with errors in Sentry.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
}

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

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

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

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

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

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

// The Sentry request handler middleware must be added before any other handlers
app.use(Raven.requestHandler());

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

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

// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
  // The ID of error events captured by the Sentry error middleware is attached to `res.sentry`.
  // You can use this ID for debugging, or to correlate requests with errors in Sentry.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
});

app.listen(3000);

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);

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("https://examplePublicKey@o0.ingest.sentry.io/0").install();

Add Raven.errorHandler as a Loopback middleware:

Copied
// server/middleware.json

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

Copied
// config/http.js

var Raven = require("raven");
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0").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
    ],
  },
};
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").