TypeError: winston.Logger не является конструктором с winston и morgan - PullRequest
0 голосов
/ 28 июня 2018

Я пробовал с Winston для logger. Я использовал в одном проекте их. Это работает хорошо, когда я копирую код вставки из их в текущий существующий проект, чем я сталкиваюсь с такой проблемой, как TypeError: winston.Logger is not a constructor

let logger = new (winston.Logger) ({ ^

TypeError: winston.Logger не является конструктором

Пожалуйста, объясните мне, почему эта ошибка и что я должен сделать для решения этой проблемы.

"Морган": "^ 1.9.0", "Уинстон": "^ 3.0.0"

Ниже приведен мой код в logger.js файле.

var appRoot = require('app-root-path');
var winston = require('winston');

var options = {
  file: {
    level: 'info',
    name: 'file.info',
    filename: `${appRoot}/logs/app.log`,
    handleExceptions: true,
    json: true,
    maxsize: 5242880, // 5MB
    maxFiles: 100,
    colorize: true,
  },
  errorFile: {
    level: 'error',
    name: 'file.error',
    filename: `${appRoot}/logs/error.log`,
    handleExceptions: true,
    json: true,
    maxsize: 5242880, // 5MB
    maxFiles: 100,
    colorize: true,
  },
  console: {
    level: 'debug',
    handleExceptions: true,
    json: false,
    colorize: true,
  },
};


// your centralized logger object
let logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(options.console),
    new (winston.transports.File)(options.errorFile),
    new (winston.transports.File)(options.file)
  ],
  exitOnError: false, // do not exit on handled exceptions
});

1 Ответ

0 голосов
/ 28 июня 2018

Как вы упоминаете, вы используете 3.0.0, вы не можете не использовать winston.Logger, вы можете ссылаться на код библиотеки (https://github.com/winstonjs/winston/blob/master/lib/winston.js#L178)

Вам нужно сделать небольшое обновление в вашем коде, используйте winston.createLogger вместо new (winston.Logger)

// your centralized logger object
let logger = winston.createLogger({
  transports: [
    new (winston.transports.Console)(options.console),
    new (winston.transports.File)(options.errorFile),
    new (winston.transports.File)(options.file)
  ],
  exitOnError: false, // do not exit on handled exceptions
});
...