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

res*_*ode 24 node.js express

我有这样的代码将呈现没有定义路由的玉模板.可以把它想象成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();
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是res.render()没有抛出错误.相反,它正在呈现错误页面.有没有办法检测丢失的模板或任何渲染错误?

Aug*_*ger 45

一个更好的方法,而不是要求fs和另一个回调,将使用渲染的回调:

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 很棒的发现.它只在3.x文档中,但它也在2.x中工作. (4认同)