node.js - express 和 jade,忽略渲染错误

标签 node.js express pug

所以,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/

相关文章:

javascript - 如何使用 Javascript 从 JSON 文件中选择一个随机对象(?)?

python - Homebrew 可以在 Apple ARM 处理器上运行吗?

node.js - 对与删除和放置关联的端点感到困惑

node.js - Node sass : File to import not found or unreadable: ./node_modules/

node.js - jade 文件中出现意外标记 "indent"

javascript - 如果端口范围太宽,Node 中的端口扫描将不起作用

node.js - Nodejs mongodb 的事务 API `withTransaction` 总是返回 null

angularjs - 在 NodeJS 中使用 Express 运行后端和前端服务器是一个好习惯吗?

node.js - 使用 Node + Jade + Express 渲染存储在 Mongo (GridFS) 中的图像

node.js - 脚本内的条件。 Jade 中