类型错误:winston_daily_rotate_file_1.default 不是构造函数

问题描述 投票:0回答:1
os : windows 10
"winston": "^3.12.0",
"winston-daily-rotate-file": "^5.0.0"
nodeJS : v20.11.1
nestJS : 10.3.2

我正在尝试在 Nestjs 中使用 Winston 记录器。处理

winston-daily-rotate-file
时,登录文件管理设置部分发生以下错误。

https://github.com/winstonjs/winston-daily-rotate-file

我参考上面的参考资料进行了工作,我的代码如下。

import * as winston from 'winston';
import DailyRotateFile from 'winston-daily-rotate-file';

const { timestamp, colorize } = winston.format;

const config = {
  levels: {
    error: 0,
    debug: 1,
    warn: 2,
    data: 3,
    info: 4,
    verbose: 5,
    silly: 6,
    custom: 7,
  },
  colors: {
    error: 'red',
    debug: 'blue',
    warn: 'yellow',
    info: 'green',
    data: 'magenta',
    verbose: 'cyan',
    silly: 'grey',
    custom: 'yellow',
  },
};

const dataOnlyFormat = winston.format((info) => {
  if (info.level === 'data') {
    return info;
  }
  return false;
})();

const transport: DailyRotateFile = new DailyRotateFile({
  filename: 'application-%DATE%.log',
  datePattern: 'YYYY-MM-DD-HH',
  dirname: `${__dirname}/../../../logs/data`,
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d',
  format: winston.format.combine(dataOnlyFormat, timestamp(), winston.format.json()),
});

winston.addColors(config.colors);

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const singleLineFormat = winston.format.printf(({ level, message, timestamp, context, ...meta }) => {
  const metaString = JSON.stringify(meta);
  return `👀 [****] ${timestamp} [${level}] \n📟 ${message} - ${metaString}\n\n`;
});

export const winstonConfig = {
  levels: config.levels,
  transports: [
    new winston.transports.Console({=
      level: process.env.NODE_ENV === 'release' ? 'info' : 'silly',
      format: winston.format.combine(
        timestamp({
          format: 'YYYY. MM. DD. hh:mm:ss A',
        }),
        singleLineFormat,
        colorize({ all: true }),
      ),
    }),
    transport,
  ],
};

以下传输发生错误。你知道原因吗?

export const winstonConfig = {
  levels: config.levels,
  transports: [
    new winston.transports.Console({
      level: process.env.NODE_ENV === 'release' ? 'info' : 'silly',
      format: winston.format.combine(
        timestamp({
          format: 'YYYY. MM. DD. hh:mm:ss A',
        }),
        
        singleLineFormat,
        colorize({ all: true }),
      ),
    }),
    transport,
  ],
};
TypeError: winston_daily_rotate_file_1.default is not a constructor
    at Object.<anonymous> (D:\***\src\configs\winston.config.ts:36:36)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1435:10)     
    at Module.load (node:internal/modules/cjs/loader:1207:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1023:12)
    at Module.require (node:internal/modules/cjs/loader:1235:19)
    at require (node:internal/modules/helpers:176:18)
    at Object.<anonymous> (D:\***\src\app.module.ts:10:1)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
logging nestjs winston
1个回答
0
投票

更新此行:

import DailyRotateFile from 'winston-daily-rotate-file';

    import 'winston-daily-rotate-file';

这个初始化:

const transport: DailyRotateFile = new DailyRotateFile

const transport = new winston.transports.DailyRotateFile
© www.soinside.com 2019 - 2024. All rights reserved.