Экспресс и Джейд, игнорировать ошибки рендеринга - PullRequest
3 голосов
/ 06 апреля 2011

Итак, экспресс + Джейд == круто.Там нет вопросов.Однако, исходя из django, мне не хватает режима сбоя, который использовали шаблоны django.В django, если я пытаюсь отобразить переменную, которая не существует, она просто игнорирует ее и движется дальше.Хотя бывают случаи, когда это действительно раздражает, в большинстве случаев это не так.Таким образом, когда я пытаюсь отобразить переменную в jade с помощью express, 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.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Вы можете проверить наличие переменных в Jade:

  if typeof(msg) !== 'undefined'
    p #{msg}

Это не автоматически, но я обнаружил, что это спасатель.

2 голосов
/ 07 апреля 2011

Это невозможно, поскольку средство визуализации выдает ошибку, когда оценка javascript завершается неудачно.

https://github.com/visionmedia/jade/blob/master/lib/jade.js#L197

Вы можете раскошелиться на проект и добавить опцию, чтобы избежать вызова на rethrow или, по крайней мере, позволить вашему рендеру лучше провалиться, обернув res.render:

app.render = function (res, options) {
  try {
    res.render(options);
  } catch(e) {
    //log(e);
  }
}
...