我剛開始使用Sails.js,它是一個了不起的框架。但是我遇到了一些情況,我找不到Google的解決方案,所以我來這裏尋求幫助。Sails.js中的錯誤處理
我有一個控制器連接到另一個遠程服務,其設計很老,充滿了XML響應和不一致的API,將該服務包裝在簡單和乾淨的API中。所以,我有一些路由器,如:
list: function(req, res) {
params = {
...
}
FooService.request(data, function(error, response) {
res.send(response)
})
process.once('uncaughtException', function(err) {
res.send(500, '[Foo] ' + err);
});
},
的「process.once」是可以在FooService.request過程中提出的異步異常。我知道這是不好的代碼,我的問題是:如何處理更多的Sails.js方式?
在Node.js中我們有Domain和connect-domain,它們是針對這些問題而設計的。因爲Sails.js基本上是Express,它可以很好地促進連接域,所以我認爲可能有一些慣用的方法來做到這一點。
我試過在配置/ local.js添加此:
module.exports = {
...
express: {
customMiddleware: function(app) {
console.log('Custom middleware config called')
var domain = require('connect-domain')
app.use(domain())
.use(function(err, req, res, next) {
console.log('Error catched!')
res.send(500, '[Foo] ' + err)
})
}
}
};
非逮住異常發生時,它不會崩潰的服務器和錯誤500返回給客戶端('app.use(域())的作品)。但是自定義錯誤處理程序不會調用。不知道爲什麼。
Sails有一個config文件夾,其中包含express.js文件,嘗試將連接域代碼放在那裏。 –
是的我已經把它們放入express.js,但自定義處理程序.use(函數(err,req,res,next){})仍然沒有被調用... – Neo