Nodejs:如何从中间件中捕获异常?

Sea*_*rle 5 less node.js express

我正在使用node.js和"less"编译器中间件:

app.configure(function() {
    // ...
    app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }))
    // ...
})
Run Code Online (Sandbox Code Playgroud)

现在我有一个错误的.less文件,但我找不到任何关于如何获取错误消息的文档.我收到的页面是这样的:

<html>
  <head>
    <title>[object Object]</title>
    <style>
      /* css stuff */
    </style>
  </head>
  <body>
    <div id="wrapper">
      <h1>Connect</h1>

      <h2><em>500</em> [object Object]</h2>
      <ul id="stacktrace"></ul>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以这没有用.有人有个主意吗?

Sea*_*rle 4

啊,好的,明白了。诀窍是放弃开发 errorHandler

app.configure('development', function() {
    // app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
Run Code Online (Sandbox Code Playgroud)

它似乎吞下了对 app.error 的调用,所以现在可以了:

app.error(function(err, req, res, next) {
    sys.puts("APP.ERROR:" + sys.inspect(err));
    next(err);
});
Run Code Online (Sandbox Code Playgroud)

这显示了正确的错误,而不是 [object Object]