我刚开始使用Sails.js,这是一个了不起的框架.但我遇到了一些情况,我找不到谷歌的解决方案,所以我来到这里寻求帮助.
我有一个控制器连接到另一个远程服务,使用非常旧设计的API,充满XML响应和不一致性,将该服务包装在简单干净的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,它可以很好地促进连接域,我认为可能有一些惯用的方法来做到这一点.
我试过在config/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(domain())'工作).但是没有调用自定义错误处理程序.不知道为什么.