我正在尝试将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'
],
}
};
不幸的是它不起作用。如果可以,请帮助我指出正确的方向。
答案 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放在最后。这对于它可以捕捉到中间件链中的错误非常重要。