Winston 3.2.1 - TypeError: logger.error не является функцией - PullRequest
0 голосов
/ 30 апреля 2020

Недавно обновлен до winston 3.2.1. Я тестировал некоторые новые функции и ожидал сообщения об ошибке. Я обнаружил, что мой сервер сломался. Причина -> TypeError: logger.error is not a function

Кто-нибудь еще сталкивался с этой проблемой?

Моя конфигурация winston:

const options: LoggerOptions = {
  level: 'info',
  format: format.combine(
    format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    format.json()
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'combined.log' })
  ]
};

const logger: Logger = createLogger(options);

export default logger;

Она была импортирована в другие модули как logger.error(err.message, err); и все работало нормально до сих пор.

Я посмотрел на index.d.ts и Logger, а также на log / error / info и т.д. c, поэтому error действительно принимает сообщения и мета-данные, но у меня сохраняется эта ошибка типа.

Я также пытался передать как infoObject - я получаю ту же ошибку.

interface Logger extends NodeJSStream.Transform {
    silent: boolean;
    format: logform.Format;
    levels: Config.AbstractConfigSetLevels;
    level: string;
    transports: Transport[];
    exceptions: ExceptionHandler;
    profilers: object;
    exitOnError: Function | boolean;

    log: LogMethod;
    add(transport: Transport): Logger;
    remove(transport: Transport): Logger;
    clear(): Logger;
    close(): Logger;

    // for cli and npm levels
    error: LeveledLogMethod;
    warn: LeveledLogMethod;
    help: LeveledLogMethod;
    data: LeveledLogMethod;
    info: LeveledLogMethod;
    debug: LeveledLogMethod;
    prompt: LeveledLogMethod;
    http: LeveledLogMethod;
    verbose: LeveledLogMethod;
    input: LeveledLogMethod;
    silly: LeveledLogMethod;

    // for syslog levels only
    emerg: LeveledLogMethod;
    alert: LeveledLogMethod;
    crit: LeveledLogMethod;
    warning: LeveledLogMethod;
    notice: LeveledLogMethod;

    query(options?: QueryOptions, callback?: (err: Error, results: any) => void): any;
    stream(options?: any): NodeJS.ReadableStream;

    startTimer(): Profiler;
    profile(id: string | number, meta?: LogEntry): Logger;

    configure(options: LoggerOptions): void;

    child(options: Object): Logger;

    new(options?: LoggerOptions): Logger;
  }

ошибка проп ->

  interface LeveledLogMethod {
    (message: string, callback: LogCallback): Logger;
    (message: string, meta: any, callback: LogCallback): Logger;
    (message: string, ...meta: any[]): Logger;
    (infoObject: object): Logger;
  }
...