在catch块js中创建新的Object()

时间:2016-10-18 04:10:07

标签: javascript node.js express ecmascript-6 winston

import express from 'express';
import route from './server/routes/route';
import cookieParser from 'cookie-parser';
import bodyParser from 'body-parser';
import favicon from 'serve-favicon';
import path from 'path';
import Logger from './server/logger/logger.js';

try {
  const app = express();
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({extended: false}));
  app.use(cookieParser());
  app.use(favicon(path.join(__dirname, '/client/assets/favicon.ico')));
  app.use(express.static(path.join(__dirname, 'client')));
  app.use(route);
  app.listen(3000);
  new Logger().logInfo('Server started at port 3000');
} catch (e) {
  new Logger().logError(e);
  process.exit(1);
}

process.on('uncaughtException', function (err) {
  process.exit(1);
  new Logger().logError(err);
});

我在这里尝试创建一个快速服务器。我用了一个try catch块。当我删除import path from 'path'时,会生成错误并调用catch。但问题是new Logger().logError(e);无效。它应该将错误记录到某个文件中。但什么都没发生。但如果没有错误,那么logInfo()工作正常。我尝试登录到控制台,它正在工作。我正在使用babel,所以这是一个问题吗? Logger是一个包含winston记录器实现的类,并公开方法logError和logInfo。

1 个答案:

答案 0 :(得分:0)

这是known bug in winston,似乎他们不打算修补它。我使用过那里提供的解决方法之一,一切正常。在这里

this.winstonlogger.log('error', logMessage, () => {
  this.transports.file.on('flush', () => {
    process.exit(1);
  });
});