【问题标题】:TypeError: winston.Logger is not a constructor with winston and morganTypeError:winston.Logger 不是带有winston 和morgan 的构造函数
【发布时间】:2018-12-07 01:25:13
【问题描述】:

我用Winston 尝试了logger。我在一个项目中使用了它们,当我将代码从它们复制粘贴到当前现有项目时,它运行良好,而不是遇到TypeError: winston.Logger is not a constructor

之类的问题

让 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
});

【问题讨论】:

    标签: node.js winston morgan


    【解决方案1】:

    正如你所说,你正在使用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
    });
    

    【讨论】:

    • Here 是发生破坏性重构的提交。
    • 如果你想自定义记录器类,这会让winston无用。
    • 什么是选项?
    • 我收到 ReferenceError: options is not defined
    • @sradha 检查options 变量的问题
    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 2015-03-10
    • 2015-09-17
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多