如何使用express.js来捕获node.js中的渲染错误/缺少的模板? [英] How can I catch a rendering error / missing template in node.js using express.js?

查看:112
本文介绍了如何使用express.js来捕获node.js中的渲染错误/缺少的模板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的代码,将渲染一个没有路由定义的玉模板。想像这样的express.static但它调用res.render与url。

  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()没有引发错误。而是渲染错误页面。有没有办法检测到缺少的模板或任何渲染错误?

解决方案

更好的方式来做,而不是要求 fs 并有另一个回调,将使用render的回调:

  res 。$ {
如果(err){
res.redirect('/ 404'); //文件不存在
} else {
res.send(html);
}
});


I have code like this that will render a jade template without a route defined. Think of this like the express.static but it calls res.render with the url.

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();
    }
});

The problem is that res.render() isn't throwing an error. Instead it is rendering an error page. Is there a way to detect a missing template or any rendering errors?

解决方案

A better way to do it, instead of requiring fs and having another callback, would be to use render's 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);
    }
});

这篇关于如何使用express.js来捕获node.js中的渲染错误/缺少的模板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆