我如何处理expressjs应用程序中的意外错误以避免停机?

我如何处理expressjs应用程序中的意外错误以避免停机?

首先,我想使用try-catch方法来处理意外的错误,但它似乎只适用于同步代码。 我发现其他方法是使用nodejs域模块,但它似乎被弃用。

我正在使用快递生成器提供的标准error handling中间件来处理错误。 我也在我的应用程序中使用npm forever模块。

像永远一样使用进程监视器是否足够,或者我应该采取任何不同的方法来处理意外错误?

我会推荐pm2永远,因为它有几个很棒的function。 我们在我们的生产网站使用它,它工作的很好。 启用日志logging以跟踪您的exception。

http://pm2.keymetrics.io/

PM2允许您轻松pipe理日志。 您可以实时显示所有应用程序日志,刷新它们并重新加载它们。 也有不同的方式来configurationPM2如何处理您的日志(在不同的文件中分离,合并,具有时间戳…),而不需要修改代码中的任何东西。

我已经在我的应用程序中处理了这个,通过在我的“index.js”中列出未被捕获的错误进程。

//Catch uncaught exceptions process.on('uncaughtException', function (err) { // handle the error safely console.log(err); }); 

你可以使用try-catch使用生成器和promise的组合。 – https://gist.github.com/swarajgiri/16202e32aa4d80d45c62

在捕获一个错误时,把它传递给一个error handling程序,在你的server/app.js

 // errors handler. app.use(function (err, req, res, next) { if (! err) { return next(); } res.status(500); res.send('500: Internal server error'); }); 

你仍然需要foreverpm2pipe理它。