防止在uncaughtExceptions之后崩溃节点js

时间:2018-10-23 11:12:01

标签: node.js

我编写了一个用于处理uncaughtExceptions的中间件,该中间件工作正常,但是在那之后服务器将崩溃。 如何防止崩溃?

server.js:

const express = require('express');
const winston = require("winston");
const app = express();

//Logging is responsible to log and display errors
require('./startup/logging')();
//routes will contains all the routes list
require('./startup/routes')(app);

//PORT
const port = process.env.PORT || 3000;
app.listen(port,() => winston.info(`Listening on port ${port}....`));

logging.js

const express = require('express');
const winston = require('winston');
// require('express-async-errors');

module.exports = function() {
  winston.handleExceptions(
    new winston.transports.File({ filename: 'uncaughtExceptions.log' })
  );

  process.on('unhandledRejection', (ex) => {
    throw ex;
  });

  winston.add(winston.transports.File, { filename: 'error.log' });

}

1 个答案:

答案 0 :(得分:1)

如果您执行throw ex;,则程序将崩溃,而应将崩溃报告和消息发送到所使用的相应报告机制。这是一个小片段

process.on('unhandledRejection', (reason, promise) => {
  console.log('Unhandled Rejection at:', reason.stack || reason)
  // Recommended: send the information to sentry.io
  // or whatever crash reporting service you use
})