将opbeat与风帆整合

时间:2015-07-11 11:21:20

标签: sails.js

我正在尝试将http://jsfiddle.net/f3adtsmb/与sails.js集成。他们有一个node.js opbeat,其中包括对Connect和Express的中间件支持。 我试图在http.js

中创建自定义中间件
module.exports.http = {

  middleware: {

    opbeat : require('opbeat')({
        organizationId: '...',
        appId: '...',
        secretToken: '...'
    }),

    order: [
      'opbeat',
      'startRequestTimer',
      'cookieParser',
      'session',
      'myRequestLogger',
      'bodyParser',
      'handleBodyParserError',
      'compress',
      'methodOverride',
      'poweredBy',
      '$custom',
      'router',
      'www',
      'favicon',
      '404',
      '500'
    ],

  }
};

不幸的是它不起作用。如果可以,请帮助我指出正确的方向。

1 个答案:

答案 0 :(得分:3)

初始化函数返回的值不是正确的中间件函数(它只是一个Opbeat客户端)。要获取中间件功能,请在客户端上调用middleware.connect()

var opbeat = require('opbeat')({
  organizationId: '...',
  appId: '...',
  secretToken: '...'
})

module.exports.http = {
  middleware: {
    opbeat: opbeat.middleware.connect(), // get the Opbeat middleware function

    order: [
      ... // put the bulk of your middleware here
      'opbeat'
    ]
  }
}

P.S。该函数被称为middleware.connect(),因为connect module设置了具有期望3个参数的中间件函数的标准;请求,响应和回调。存在一个名为middleware.express()的别名 - 但它就是:别名。

<强>更新

我在上面的示例中颠倒了中间件的顺序,以便将Opbeat放在最后。这对于它可以捕捉到中间件链中的错误非常重要。