我如何处理expressjs应用程序中的意外错误以避免停机?
我如何处理expressjs应用程序中的意外错误以避免停机?
首先,我想使用try-catch方法来处理意外的错误,但它似乎只适用于同步代码。 我发现其他方法是使用nodejs域模块,但它似乎被弃用。
我正在使用快递生成器提供的标准error handling中间件来处理错误。 我也在我的应用程序中使用npm forever模块。
像永远一样使用进程监视器是否足够,或者我应该采取任何不同的方法来处理意外错误?
我会推荐pm2永远,因为它有几个很棒的function。 我们在我们的生产网站使用它,它工作的很好。 启用日志logging以跟踪您的exception。
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'); });
你仍然需要forever
或pm2
pipe理它。