本文介绍了如何使用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中的渲染错误/缺少的模板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!