---
title: "Integrations"
url: https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations/
---

# Integrations | Sentry for Node.js

##### Deprecation Warning

A new Node SDK has superseded this deprecated version. Sentry preserves this documentation for customers using the old client. We recommend using the [updated Node SDK](https://docs.sentry.io/platforms/javascript/guides/node.md) for your projects.

## [Connect](https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations.md#connect)

```javascript
var connect = require("connect");
var Raven = require("raven");

// Must configure Raven before doing anything else with it
Raven.config("___PUBLIC_DSN___").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);
```

## [Express](https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations.md#express)

```javascript
var app = require("express")();
var Raven = require("raven");

// Must configure Raven before doing anything else with it
Raven.config("___DSN___").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);
```

## [Koa](https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations.md#koa)

```javascript
var koa = require("koa");
var Raven = require("raven");

var app = koa();
Raven.config("___PUBLIC_DSN___").install();

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

app.listen(3000);
```

## [Loopback](https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations.md#loopback)

If you’re using Loopback 2.x LTS, make sure you’ve migrated to [strong-error-handler](https://loopback.io/doc/en/lb2/Using-strong-error-handler.html), otherwise no errors will get to `raven-node`.

Configure `raven-node` as early as possible:

```javascript
// server/server.js

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

Add `Raven.errorHandler` as a Loopback middleware:

```json
// server/middleware.json

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

## [Sails](https://docs.sentry.io/platforms/javascript/guides/node/legacy-sdk/integrations.md#sails)

```javascript
// 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
    ],
  },
};
```
