web-dev-qa-db-fra.com

TypeError: winston.Logger n'est pas un constructeur avec winston et morgan

J'ai essayé avec Winston pour logger. J'ai utilisé dans un projet leur. Cela fonctionne bien lorsque je copie le code de leur projet actuel que je rencontre un problème comme TypeError: winston.Logger is not a constructor

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

TypeError: winston.Logger n'est pas un constructeur

Merci de me guider, Pourquoi cette erreur et que devrais-je faire pour résoudre ce problème?.

"morgan": "^ 1.9.0", "winston": "^ 3.0.0"

Voici mon code dans le fichier 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
});
35
higunjan

Comme vous le mentionnez, vous utilisez 3.0.0, vous ne pouvez pas utiliser winston.Logger, vous pouvez vous référer au code de la bibliothèque ( https://github.com/winstonjs/winston/blob/master/ lib/winston.js # L178 )

Vous devez faire une petite mise à jour dans votre code, utilisez winston.createLogger au lieu de 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
});
77
Arif Khan