我试着用Winstonlogger.我在一个项目中使用了他们的,当我将代码从他们的复制粘贴到当前现有的项目中时,它工作得很好,而我面临的问题是打字错误:温斯顿.记录器不是构造函数

让logger=new(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
});

推荐答案

正如你提到的,你正在使用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
});

Node.js相关问答推荐

使用OpenAI API时遇到问题

如何使用jq将依赖项添加到package.json中

使用NodeJS输出检索Base64图像的网络报废

Stripe webhook无法访问Express请求原始正文

Sequelize-测试使用虚拟场更新模型

MongoDB的方面查询的Postgres类似功能

一个函数中的两个依赖的NodeJS数据库操作.如果第二个失败了怎么办?

npm 在 Windows 终端中不工作

在 linux mint 上部署 node 应用程序的最简单方法是什么?

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

为什么我的react 表单不能正常工作?

为什么需要在 NodeJS 应用程序中创建服务器?

在 Javascript 逻辑中访问 EJS 变量

使用restify时如何支持cors

Mongoose:查找、修改、保存

node/express:使用 Forever 连续运行脚本时设置 NODE_ENV

带有加密的nodejs中的SALT和HASH密码

MongoDB Node findone如何处理没有结果?

npm package.json 操作系统特定脚本

nodemon + express,监听端口=?