0

我正在使用 Express.js 和 swig 模板来构建 Web 应用程序。问题是当 swig 渲染失败时(例如当模板出现故障时),我无法捕捉到它抛出的错误并且节点崩溃。

具体来说,当我使用 stringGenerator 函数返回一个对象并以错误的方式引用该对象时,就会出现错误。我收到了一个我似乎无法捕捉到的“意外键”错误。

app.get('/', function (req, res) {
   try {
       res.render('index', { 'stringFunction': stringGenerator });
   } catch(err) {
     console.error(err);
   }
});

如何捕捉 swig 在 res.render 中引发的错误。

4

2 回答 2

0

一种解决方案是使用express-domain-middleware. 这使您可以捕获路由中的错误并使用普通的 Express 错误处理程序处理它们:

app.use(require('express-domain-middleware'));

...your routes...

// error handler
app.use(function(err, req, res, next) {
  console.error('An error occurred:', err.message);
  res.send(500);
});

虽然这并不仅仅严格处理 Swig 错误,但是除了使用域来捕获 Swig 错误之外,我还没有找到其他方法。

于 2013-10-17T14:30:34.897 回答
0

如果您使用 Swig ~1.2.2,它会将异常传递给 Express,Express 将在您设置的任何错误处理程序中处理它。

于 2013-12-07T00:50:49.933 回答