Node.js Express - 根据错误类型以不同方式处理错误

Node.js Express - Handle Error Differently Based on Error Type

一些细节...我使用 Express 4、Node 0.12.2 和 Express-Handlebars 作为我的视图引擎。

我正在尝试通过 AJAX 调用呈现部分内容,并希望以不同方式处理不同的错误类型。在回调调用上传递的 err 对象似乎没有太多有用的信息可以使用,只是一条错误消息。我在这里遗漏了什么吗?

// Search (Partial)
router.get('/search-products', function (req, res, next) {
    res.render('partials/search/products', {layout: 'ajax'}, function(err, html){
        if(err) {
            // return res.status(404).send(err);
            // return res.status(500).send(err);
        }
        res.send(html);
    });
});

该错误对象不会有状态代码,因为它是由视图引擎生成的错误对象。如果出现该错误,您几乎可以认为这是一个 500 错误,因为视图引擎由于某种原因无法编译视图。

例如,如果您使用的是 Jade,如果您尝试让 Jade 编译具有无效 Jade 语法的模板,则会填充该错误对象。那里的错误永远不会与 HTTP 相关,这意味着它始终只是服务器端错误,状态代码 500 就足够了。