TypeError:winston.Logger不是winston和morgan的构造函数

Gun*_*tel 39 node.js winston morgan

我试过Winstonlogger.我在一个项目中使用它当我将代码从它们粘贴到当前现有项目而不是我遇到像TypeError: winston.Logger is not a constructor

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

TypeError:winston.Logger不是构造函数

请指导我,为什么会出现此错误以及我应该如何解决此问题.

"摩根":"^ 1.9.0","winston":"^ 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
});
Run Code Online (Sandbox Code Playgroud)

Ari*_*han 87

如你所说,你正在使用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
});
Run Code Online (Sandbox Code Playgroud)

  • @sradha检查`options`变量的问题 (2认同)