所以,express+jade == 很酷。毫无疑问。但是,来自 django,我错过了 django 模板使用的失败模式。在 Django 中,如果我尝试渲染一个不存在的变量,它只会忽略它并继续前进。虽然有时这真的很烦人,但大多数时候并非如此。因此,当我尝试使用 express 在 jade 中呈现一个变量时,如果该变量不存在/未定义,则 express 会报错 500。
500 TypeError: Jade:14
12. ' // main content, post, login, etc '
13. ' - if (data.session.user) '
14. ' != partial(\'dash') '
Jade:3
1. '- if (data.session.user)'
2. ' p #{data.session.user.id}'
3. ' p #{data.cookie.connect.sid}' Cannot read property 'connect' of undefined
我只是在这里做实验,所以请忽略我要打印的内容。 :) 总之,有没有一种简单的方法可以告诉 jade/express 忽略模板中的错误并继续渲染,例如 django 模板系统中的行为。
最佳答案
这是不可能的,因为渲染器会在 javascript 计算失败时抛出错误。
https://github.com/visionmedia/jade/blob/master/lib/jade.js#L197
你可以 fork 项目并添加一个选项来避免调用 rethrow
或者至少通过包装 res.render
让你的渲染失败更好:
app.render = function (res, options) {
try {
res.render(options);
} catch(e) {
//log(e);
}
}
关于node.js - express 和 jade,忽略渲染错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567546/