2012-05-31 28 views
0

我有一个工作的node.js/express基于服务器,并且使用jade进行模板化。通常没有问题,但每天我会在请求任何页面时收到错误消息。错误是'找不到视图'。我不知道为什么我得到这个错误,因为它只是在几分钟前运行良好。然而处理res.render中的玉错误()

的问题是我怎么能强制实施崩溃这一事件,例如:

res.render('index.jade', {info: 'msg'}, function(error, ok) { 
    if (error) 
     throw new Error(''); 
    // Proceed with response 
}; 

我将如何做到这一点?我将如何着手回应?

谢谢。

+0

你说你想“强迫崩溃”,你的意思是你想退出这个过程吗? –

+0

你不需要添加扩展名,使用'res.render('index');'' – Donflopez

回答

0

试试这个:

app.use(function (req, res, next) { 
    fs.exists(__dirname + '/views/' + req.url.substring(1) + '.jade', function (exists) { 
     if(!exists) { 
     console.log(err); 
     return next(); 
     } 
     res.render(req.url.substring(1), { title: "No Controller", user: req.session.user }); 
    } 
}); 
1

您可以添加一个错误处理的中间件。

app.use(function handleJadeErrors(err, req, res, next) { 
    // identify the errors you care about 
    if (err.message === 'failed to locate view') { 
    // do something sensible, such as logging and then crashing 
    // or returning something more useful to the client 
    } else { 
    // just pass it on to other error middleware 
    next(err); 
    } 
});