Search code examples
node.jsexpressairbrake

airbrake.expressHandler(), error function does not exist


I'm going according to the documentation at

https://github.com/felixge/node-airbrake

But when I try it, I get

app.error(airbrake.expressHandler());
                 ^
TypeError: Object #<Airbrake> has no method 'expressHandler'

My code is as follows:

// dependencies
var express = require('express')
  , http = require('http')
  , logger = require('./app/lib/logger')
  , airbrake = require('airbrake').createClient('HIDDEN');

var app = express();
var env = app.settings.env;

// controllers
var InvoiceController = require('./app/controllers/invoice_controller')
  , IndexController = require('./app/controllers/index_controller')
  , PaymentController = require('./app/controllers/payment_controller')
  , AccountController = require('./app/controllers/account_controller')
  ;

// configurations and middleware stack
app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/app/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

if (env === 'production' || env === 'staging' || env === 'qa') {
  app.error(airbrake.expressHandler());
} else {
  app.error(airbrake.expressHandler());
  //app.use(express.errorHandler());
}

throw new Error("testing express handler");

Solution

  • It looks like that particular handler was added after the last official release and isn't in the npm repository yet: try installing the latest code from github.