为什么Node.js +表达应用程序崩溃错误?

时间:2014-12-14 00:12:46

标签: javascript json node.js error-handling

我正在运行Express 3.5.3和节点0.10.29。当JSON未正确解析时,我希望应用程序崩溃并重新启动(使用monit)。不幸的是,当app.get处理程序内部时,应用程序不会崩溃。这是我的测试代码:

app.get("/api/pixel", function(req, res) {
  res.send(getPixel(), { 'Content-Type': 'image/gif' }, 200);
  JSON.parse("{123,adkljfl]")
});

我希望应用程序在尝试解析错误的JSON后崩溃,但事实并非如此。我很想知道为什么。

1 个答案:

答案 0 :(得分:2)

您使用的是任何错误处理中间件吗?默认的快速脚手架有这些:

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

如果您希望应用崩溃,可以删除它们,并且必须使用foreverpm2之类的内容来确保您的应用在崩溃时重新启动。