Winston: Невозможно прочитать свойство json из undefined

Созданный на 10 нояб. 2017  ·  9Комментарии  ·  Источник: winstonjs/winston

Используя пример на домашней странице, я получаю следующую ошибку:

/Users/owner/path/log.js:7
    format: winston.format.json(),
                          ^

TypeError: Cannot read property 'json' of undefined
    at Object.setupLogging (/Users/owner/path/log.js:7:27)
    at Object.<anonymous> (/Users/owner/path/server.js:35:8)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:578:3
const winston = require('winston');

function setupLogging(app) {
  const logger = winston.createLogger({
    level: 'info',
    format: winston.format.json(),
    transports: [
      //
      // - Write to all logs with level `info` and below to `combined.log`
      // - Write all logs error (and below) to `error.log`.
      //
      new winston.transports.File({ filename: 'error.log', level: 'error' }),
      new winston.transports.File({ filename: 'combined.log' }),
    ],
  });

  //
  // If we're not in production then log to the `console` with the format:
  // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
  //
  if (process.env.NODE_ENV !== 'production') {
    logger.add(new winston.transports.Console({
      format: winston.format.simple(),
      colorize: true,
    }));
  }

}

module.exports = {
  setupLogging,
};

package.json списки "winston": "^2.4.0"

Самый полезный комментарий

Решено: readme.md предназначен для версии 3. У меня версия 2.

На домашней странице показано использование v3, но npm по-прежнему по умолчанию v2.

Вероятно, на домашней странице следует об этом четко упомянуть.

screen shot 2017-11-10 at 4 51 49 pm

Все 9 Комментарий

console.log(winston);

Выход:

{ version: '2.4.0',
  transports: 
   { Console: [Getter],
     File: [Getter],
     Http: [Getter],
     Memory: [Getter] },
  hash: [Function],
  clone: [Function],
  longestElement: [Function],
  exception: 
   { getAllInfo: [Function],
     getProcessInfo: [Function],
     getOsInfo: [Function],
     getTrace: [Function] },
  config: 
   { allColors: 
      { ... },
     addColors: [Function],
     colorize: [Function],
     cli: { levels: [Object], colors: [Object] },
     npm: { levels: [Object], colors: [Object] },
     syslog: { levels: [Object], colors: [Object] } },
  addColors: [Function],
  Container: [Function],
  Logger: 
   { [Function]
     super_: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },
  Transport: 
   { [Function]
     super_: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },
  loggers: { loggers: {}, options: {}, default: { transports: [Array] } },
  levels: { error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 },
  error: [Function],
  warn: [Function],
  info: [Function],
  verbose: [Function],
  debug: [Function],
  silly: [Function],
  log: [Function],
  query: [Function],
  stream: [Function],
  add: [Function],
  remove: [Function],
  clear: [Function],
  profile: [Function],
  startTimer: [Function],
  extend: [Function],
  cli: [Function],
  handleExceptions: [Function],
  unhandleExceptions: [Function],
  configure: [Function],
  setLevels: [Function] }

Похоже, что нет свойства createLogger или format .

Источник показывает, что createLogger находится в объекте экспорта.

Решено: readme.md предназначен для версии 3. У меня версия 2.

На домашней странице показано использование v3, но npm по-прежнему по умолчанию v2.

Вероятно, на домашней странице следует об этом четко упомянуть.

screen shot 2017-11-10 at 4 51 49 pm

Прошло три месяца, и это все еще актуально.

Просто меня это тоже укусило.

См. PR: https://github.com/winstonjs/winston/pull/1198

Попался в ту же ловушку. Но кого это волнует ¯_ (ツ) _ / ¯

Обновление до v3:

npm i winston<strong i="6">@next</strong> --save

benwinding, спасибо ... тонна ... однако теперь с BOT Builder Framework от Microsoft (с использованием TypeScript) ... теперь выдает эту ошибку: TypeError: невозможно создать свойство 'Symbol (level)' в строке 'h'

любая помощь?

@ sanjivsingh22 Не уверен, что это такое. Но если бы я занимался отладкой.

  1. Закомментируйте как можно больше кода, пока Typescript правильно не скопирует исходный код.
  2. Найдите точную строку кода, которая вызывает ошибку
  3. Попробуйте добавить к этому коду различные аннотации TypeScript, например: String, Number. Любой...

Надеюсь, это приблизит решение.

Пойдем дальше и закроем это, так как README был обновлен, и скоро будет выпущена версия 3. Не стесняйтесь открывать новый выпуск, если возникнут новые проблемы. Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги