一尘不染

如何使用express.js在node.js中捕获渲染错误/缺少模板?

node.js

我有这样的代码,可以在没有定义路线的情况下渲染玉器模板。可以把它想成express.static,但是它用URL调用res.render。

app.use(function (req, res, next) {
    try {
        res.render(req.url.substring(1), { title: "No Controller", user: req.session.user });
    } catch (err) {
        console.log(err)
        next();
    }
});

问题在于res.render()不会引发错误。而是呈现错误页面。有没有办法检测丢失的模板或任何渲染错误?


阅读 271

收藏
2020-07-07

共1个答案

一尘不染

一个更好的方法fs是使用render的callback ,而不是需要另一个回调,而是:

res.render(my_page_im_not_sure_it_exists, {}, function(err, html) {
    if(err) {
        res.redirect('/404'); // File doesn't exist
    } else {
        res.send(html);
    }
});
2020-07-07