Winston: No se puede leer la propiedad 'json' de undefined

Creado en 10 nov. 2017  ·  9Comentarios  ·  Fuente: winstonjs/winston

Usando el ejemplo en la página de inicio, obtengo el siguiente error:

/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 listas "winston": "^2.4.0"

Comentario más útil

Resuelto: el archivo readme.md es para la versión 3. Tengo la versión 2.

La página de inicio muestra el uso de v3, pero npm todavía tiene el valor predeterminado de v2.

La página de inicio probablemente debería mencionar esto claramente.

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

Todos 9 comentarios

console.log(winston);

Producción:

{ 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] }

No parece haber una propiedad createLogger o format .

La fuente muestra que createLogger está en el objeto de exportación.

Resuelto: el archivo readme.md es para la versión 3. Tengo la versión 2.

La página de inicio muestra el uso de v3, pero npm todavía tiene el valor predeterminado de v2.

La página de inicio probablemente debería mencionar esto claramente.

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

Han pasado tres meses y este sigue siendo el caso.

Esto también me mordió.

Ver PR: https://github.com/winstonjs/winston/pull/1198

Caí en la misma trampa. Pero a quién le importa ¯_ (ツ) _ / ¯

Actualice a v3:

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

benwind gracias ... un montón ... sin embargo, ahora con BOT Builder Framework de Microsoft (usando TypeScript) ... ahora da este error: TypeError: No se puede crear la propiedad 'Símbolo (nivel)' en la cadena 'h'

¿alguna ayuda?

@ sanjivsingh22 No estoy seguro de qué es eso. Pero si estuviera depurando.

  1. Comente tanto código como sea posible hasta que Typecript transpile la fuente correctamente.
  2. Encuentre la línea exacta de código que causa el error
  3. Intente poner diferentes anotaciones de TypeScript en ese código, por ejemplo: Cadena, Número. Alguna...

Es de esperar que esto conduzca a acercarnos a una solución.

Vamos a continuar y cerrar esto ya que el archivo README se ha actualizado y la versión 3 se enviará pronto. No dude en abrir un nuevo número si surge algún problema nuevo. ¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones