node.js表示res.render失败,如何重定向到pageNotFound页面

时间:2013-11-01 07:13:05

标签: node.js express

module.exports = function(app) {
    try{
         app.get('/:path/:id', function (req, res) {
           res.render(req.params.path+'/'+req.params.id, { id: req.params.id });
         }); 

    }
    catch(e){
         console.error(e);
    }
};

如果找不到res.render页面,如何重定向到另一个页面?

2 个答案:

答案 0 :(得分:1)

最简单的方法是在模板渲染中发生错误时重定向到404路由。

app.get('/:path/:id', function (req, res) {

   res.render(req.params.path+'/'+req.params.id,{id:req.params.id},function(err,html){
        if(err) {
            //error in rendering template o redirect to 404 page
            res.redirect('/404');
        } else {
            res.end(html);
        }
   });

});

参考文章: How can I catch a rendering error / missing template in node.js using express.js?

答案 1 :(得分:0)

为什么不创建一个能处理404页面的函数呢?即像这样的东西:

var show404Page = function(res) {
    var html = "404 page";
    res.end(html);
}
module.exports = function(app) {
    try{
         app.get('/:path/:id', function (req, res) {
            res.render(req.params.path+'/'+req.params.id, { id: req.params.id });
         }); 
    }
    catch(e){
        console.error(e);
        show404Page(res);
    }
};