7-2 日志报错

来源:7-2 通用模板项目:全局日志模块

慕尼黑8466541

2024-12-02

老师,您好!
7-2章节,日志报错,详情如下,请老师指点迷津。

版本信息:

	"winston": "^3.17.0",
	"nest-winston": "^1.9.7",
	"winston-daily-rotate-file": "^5.0.0"

createRotateTransport.ts

import DailyRotateFile from 'winston-daily-rotate-file'
import { format } from 'winston'
import { Console } from 'winston/lib/winston/transports'
import { utilities } from 'nest-winston'

export const consoleTransports = new Console({
  level: 'info',
  format: format.combine(
    format.timestamp(),
    format.ms(),
    utilities.format.nestLike('Winston')
  )
})

export function createRotateTransport(level: string, fileName: string) {
  return new DailyRotateFile({
    level,
    dirname: 'logs',
    filename: `${fileName}-%DATE%.log`,
    datePattern: 'YYYY-MM-DD-HH',
    zippedArchive: true,
    maxSize: '20m',
    maxFiles: '14d',
    format: format.combine(format.timestamp(), format.simple())
  })
}

logs.module.ts

import { Module } from '@nestjs/common'
import { ConfigService } from '@nestjs/config'
import { WinstonModule } from 'nest-winston'
import {
  consoleTransports,
  createRotateTransport
} from './createRotateTransport'

@Module({
  imports: [
    WinstonModule.forRootAsync({
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => {
        const logOn = configService.get('LOG_ON') === 'true'
        return {
          transports: [
            consoleTransports,
            ...(logOn
              ? [
                  createRotateTransport('info', 'application'),
                  createRotateTransport('warn', 'error')
                ]
              : [])
          ]
        }
      }
    })
  ]
})
export class LogsModule {}

报错:

[Nest] 20267  - 2024/12/02 16:04:49   ERROR [ExceptionHandler] winston_daily_rotate_file_1.default is not a constructor
TypeError: winston_daily_rotate_file_1.default is not a constructor
    at createRotateTransport (/Users/shiyupeng/developer/nest/test-api/src/common/logger/createRotateTransport.ts:16:10)
    at InstanceWrapper.useFactory (/Users/shiyupeng/developer/nest/test-api/src/common/logger/logs.module.ts:20:40)
    at Injector.instantiateClass (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/injector.js:376:55)
    at callback (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/injector.js:65:45)
    at async Injector.resolveConstructorParams (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/injector.js:145:24)
    at async Injector.loadInstance (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/injector.js:70:13)
    at async Injector.loadProvider (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/injector.js:98:9)
    at async /Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/instance-loader.js:56:13
    at async Promise.all (index 5)
    at async InstanceLoader.createInstancesOfProviders (/Users/shiyupeng/developer/nest/test-api/node_modules/@nestjs/core/injector/instance-loader.js:55:9)
写回答

2回答

Brian

2025-01-08

https://git.imooc.com/coding-905/nestjs-starter/src/main/package.json 有没有尝试课程代码?

原因:ESModule 和 CommonJS 导入不匹配

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

你这样试试?

0
0

慕尼黑8466541

提问者

2024-12-02

在最后的章节有解决

0
0

NestJS 从拔高到精通,大型复杂业务架构落地实践

NestJS 从拔高到精通,大型复杂业务架构落地实践

163 学习 · 46 问题

查看课程