Skip to content

Consola

[Estable: 2 - Estable]

Estable: 2 Estabilidad: 2 - Estable

Código fuente: lib/console.js

El módulo node:console proporciona una consola de depuración simple que es similar al mecanismo de consola de JavaScript proporcionado por los navegadores web.

El módulo exporta dos componentes específicos:

  • Una clase Console con métodos como console.log(), console.error() y console.warn() que se pueden usar para escribir en cualquier flujo de Node.js.
  • Una instancia global console configurada para escribir en process.stdout y process.stderr. Se puede usar la consola global sin llamar a require('node:console').

Advertencia: Los métodos del objeto de consola global no son consistentemente sincrónicos como las API del navegador que se parecen, ni son consistentemente asincrónicos como todos los demás flujos de Node.js. Los programas que deseen depender del comportamiento sincrónico/asincrónico de las funciones de la consola deben primero determinar la naturaleza del flujo de respaldo de la consola. Esto se debe a que el flujo depende de la plataforma subyacente y la configuración del flujo estándar del proceso actual. Consulte la nota sobre E/S del proceso para obtener más información.

Ejemplo usando la consola global:

js
console.log('hello world')
// Imprime: hello world, a stdout
console.log('hello %s', 'world')
// Imprime: hello world, a stdout
console.error(new Error('Whoops, something bad happened'))
// Imprime el mensaje de error y el rastreo de pila en stderr:
//   Error: Whoops, something bad happened
//     at [eval]:5:15
//     at Script.runInThisContext (node:vm:132:18)
//     at Object.runInThisContext (node:vm:309:38)
//     at node:internal/process/execution:77:19
//     at [eval]-wrapper:6:22
//     at evalScript (node:internal/process/execution:76:60)
//     at node:internal/main/eval_string:23:3

const name = 'Will Robinson'
console.warn(`Danger ${name}! Danger!`)
// Imprime: Danger Will Robinson! Danger!, a stderr

Ejemplo usando la clase Console:

js
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)

myConsole.log('hello world')
// Imprime: hello world, a out
myConsole.log('hello %s', 'world')
// Imprime: hello world, a out
myConsole.error(new Error('Whoops, something bad happened'))
// Imprime: [Error: Whoops, something bad happened], a err

const name = 'Will Robinson'
myConsole.warn(`Danger ${name}! Danger!`)
// Imprime: Danger Will Robinson! Danger!, a err

Clase: Console

[Historial]

VersiónCambios
v8.0.0Los errores que ocurren al escribir en las secuencias de transmisión subyacentes ahora se ignorarán de forma predeterminada.

La clase Console se puede usar para crear un registrador simple con secuencias de transmisión de salida configurables y se puede acceder a ella usando require('node:console').Console o console.Console (o sus contrapartes desestructuradas):

js
import { Console } from 'node:console'
js
const { Console } = require('node:console')
js
const { Console } = console

new Console(stdout[, stderr][, ignoreErrors])

new Console(options)

[Historial]

VersiónCambios
v14.2.0, v12.17.0Se introdujo la opción groupIndentation.
v11.7.0Se introduce la opción inspectOptions.
v10.0.0El constructor Console ahora admite un argumento options, y se introdujo la opción colorMode.
v8.0.0Se introdujo la opción ignoreErrors.
  • options <Object>
    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> Ignorar errores al escribir en las secuencias de transmisión subyacentes. Predeterminado: true.
    • colorMode <boolean> | <string> Establecer compatibilidad con el color para esta instancia de Console. Al establecerlo en true se habilita la coloración al inspeccionar valores. Al establecerlo en false se deshabilita la coloración al inspeccionar valores. Al establecerlo en 'auto', la compatibilidad con el color depende del valor de la propiedad isTTY y del valor devuelto por getColorDepth() en la secuencia respectiva. Esta opción no se puede usar si también se establece inspectOptions.colors. Predeterminado: 'auto'.
    • inspectOptions <Object> Especifica las opciones que se pasan a util.inspect().
    • groupIndentation <number> Establecer la sangría del grupo. Predeterminado: 2.

Crea una nueva instancia de Console con una o dos instancias de secuencia de transmisión escribible. stdout es una secuencia de transmisión escribible para imprimir la salida de registro o información. stderr se usa para la salida de advertencia o error. Si no se proporciona stderr, se usa stdout para stderr.

js
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// Alternativamente
// const { Console } = console;

const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// Registrador simple personalizado
const logger = new Console({ stdout: output, stderr: errorOutput })
// Úselo como consola
const count = 5
logger.log('count: %d', count)
// En stdout.log: count 5
js
const fs = require('node:fs')
const { Console } = require('node:console')
// Alternativamente
// const { Console } = console;

const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// Registrador simple personalizado
const logger = new Console({ stdout: output, stderr: errorOutput })
// Úselo como consola
const count = 5
logger.log('count: %d', count)
// En stdout.log: count 5

La consola global es una Console especial cuya salida se envía a process.stdout y process.stderr. Es equivalente a llamar a:

js
new Console({ stdout: process.stdout, stderr: process.stderr })

console.assert(value[, ...message])

[Historial]

VersiónCambios
v10.0.0La implementación ahora cumple con las especificaciones y ya no lanza excepciones.
v0.1.101Añadido en: v0.1.101
  • value <cualquiera> El valor probado para ser verdadero.
  • ...message <cualquiera> Todos los argumentos además de value se utilizan como mensaje de error.

console.assert() escribe un mensaje si value es falso u omitido. Solo escribe un mensaje y no afecta la ejecución de otra manera. La salida siempre comienza con "Assertion failed". Si se proporciona, message se formatea usando util.format().

Si value es verdadero, no sucede nada.

js
console.assert(true, 'no hace nada')

console.assert(false, 'Ups %s funcionó', 'no')
// Assertion failed: Ups no funcionó

console.assert()
// Assertion failed

console.clear()

Añadido en: v8.3.0

Cuando stdout es un TTY, llamar a console.clear() intentará borrar el TTY. Cuando stdout no es un TTY, este método no hace nada.

La operación específica de console.clear() puede variar según los sistemas operativos y los tipos de terminales. Para la mayoría de los sistemas operativos Linux, console.clear() funciona de forma similar al comando de shell clear. En Windows, console.clear() solo borrará la salida en la ventana de terminal actual para el binario de Node.js.

console.count([label])

Añadido en: v8.3.0

  • label <string> La etiqueta de visualización para el contador. Predeterminado: 'default'.

Mantiene un contador interno específico para label y envía a stdout el número de veces que se ha llamado a console.count() con la label dada.

js
> console.count()
default: 1
undefined
> console.count('default')
default: 2
undefined
> console.count('abc')
abc: 1
undefined
> console.count('xyz')
xyz: 1
undefined
> console.count('abc')
abc: 2
undefined
> console.count()
default: 3
undefined
>

console.countReset([label])

Añadido en: v8.3.0

  • label <string> La etiqueta de visualización para el contador. Predeterminado: 'default'.

Reinicia el contador interno específico para label.

js
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>

console.debug(data[, ...args])

[Historial]

VersiónCambios
v8.10.0console.debug ahora es un alias para console.log.
v8.0.0Añadido en: v8.0.0

La función console.debug() es un alias para console.log().

console.dir(obj[, options])

Añadido en: v0.1.101

  • obj <any>
  • options <Object>
    • showHidden <boolean> Si es true, entonces también se mostrarán las propiedades no enumerables y de símbolo del objeto. Predeterminado: false.
    • depth <number> Le indica a util.inspect() cuántas veces debe recurrirse mientras se formatea el objeto. Esto es útil para inspeccionar objetos grandes y complicados. Para que recurra indefinidamente, pase null. Predeterminado: 2.
    • colors <boolean> Si es true, entonces la salida se estilizará con códigos de color ANSI. Los colores son personalizables; consulte personalización de los colores de util.inspect(). Predeterminado: false.

Utiliza util.inspect() en obj e imprime la cadena resultante en stdout. Esta función ignora cualquier función inspect() personalizada definida en obj.

console.dirxml(...data)

[Historial]

VersiónCambios
v9.3.0console.dirxml ahora llama a console.log para sus argumentos.
v8.0.0Añadido en: v8.0.0

Este método llama a console.log() pasándole los argumentos recibidos. Este método no produce ningún formato XML.

console.error([data][, ...args])

Añadido en: v0.1.100

Imprime en stderr con salto de línea. Se pueden pasar múltiples argumentos, usando el primero como mensaje principal y todos los adicionales como valores de sustitución similares a printf(3) (todos los argumentos se pasan a util.format()).

js
const code = 5
console.error('error #%d', code)
// Imprime: error #5, a stderr
console.error('error', code)
// Imprime: error 5, a stderr

Si no se encuentran elementos de formato (por ejemplo, %d) en la primera cadena, se llama a util.inspect() en cada argumento y los valores de cadena resultantes se concatenan. Consulte util.format() para obtener más información.

console.group([...label])

Añadido en: v8.5.0

Incrementa la sangría de las líneas subsiguientes en espacios para la longitud de groupIndentation.

Si se proporciona una o más etiquetas label, estas se imprimen primero sin la sangría adicional.

console.groupCollapsed()

Añadido en: v8.5.0

Un alias para console.group().

console.groupEnd()

Añadido en: v8.5.0

Disminuye la sangría de las líneas subsiguientes en espacios para la longitud de groupIndentation.

console.info([data][, ...args])

Añadido en: v0.1.100

La función console.info() es un alias para console.log().

console.log([data][, ...args])

Añadido en: v0.1.100

Imprime en stdout con salto de línea. Se pueden pasar múltiples argumentos, usando el primero como mensaje principal y todos los adicionales como valores de sustitución similares a printf(3) (todos los argumentos se pasan a util.format()).

js
const count = 5
console.log('count: %d', count)
// Imprime: count: 5, a stdout
console.log('count:', count)
// Imprime: count: 5, a stdout

Ver util.format() para más información.

console.table(tabularData[, properties])

Añadido en: v10.0.0

  • tabularData <any>
  • properties <string[]> Propiedades alternativas para construir la tabla.

Intenta construir una tabla con las columnas de las propiedades de tabularData (o usa properties) y filas de tabularData y regístrala. Si no se puede analizar como tabular, vuelve a registrar simplemente el argumento.

js
// Estos no se pueden analizar como datos tabulares
console.table(Symbol())
// Symbol()

console.table(undefined)
// undefined

console.table([
  { a: 1, b: 'Y' },
  { a: 'Z', b: 2 },
])
// ┌─────────┬─────┬─────┐
// │ (index) │ a   │ b   │
// ├─────────┼─────┼─────┤
// │ 0       │ 1   │ 'Y' │
// │ 1       │ 'Z' │ 2   │
// └─────────┴─────┴─────┘

console.table(
  [
    { a: 1, b: 'Y' },
    { a: 'Z', b: 2 },
  ],
  ['a']
)
// ┌─────────┬─────┐
// │ (index) │ a   │
// ├─────────┼─────┤
// │ 0       │ 1   │
// │ 1       │ 'Z' │
// └─────────┴─────┴─────┘

console.time([label])

Añadido en: v0.1.104

  • label <string> Predeterminado: 'default'

Inicia un temporizador que se puede usar para calcular la duración de una operación. Los temporizadores se identifican mediante una etiqueta label única. Use la misma label al llamar a console.timeEnd() para detener el temporizador y mostrar el tiempo transcurrido en unidades de tiempo adecuadas en stdout. Por ejemplo, si el tiempo transcurrido es 3869 ms, console.timeEnd() muestra "3.869 s".

console.timeEnd([label])

[Historial]

VersiónCambios
v13.0.0El tiempo transcurrido se muestra con una unidad de tiempo adecuada.
v6.0.0Este método ya no admite múltiples llamadas que no se correspondan con llamadas individuales a console.time(); consulte a continuación para obtener más detalles.
v0.1.104Añadido en: v0.1.104
  • label <string> Predeterminado: 'default'

Detiene un temporizador que se inició previamente llamando a console.time() e imprime el resultado en stdout:

js
console.time('bunch-of-stuff')
// Hacer varias cosas.
console.timeEnd('bunch-of-stuff')
// Imprime: bunch-of-stuff: 225.438ms

console.timeLog([label][, ...data])

Añadido en: v10.7.0

Para un temporizador que se inició previamente llamando a console.time(), imprime el tiempo transcurrido y otros argumentos data a stdout:

js
console.time('process')
const value = expensiveProcess1() // Devuelve 42
console.timeLog('process', value)
// Imprime "process: 365.227ms 42".
doExpensiveProcess2(value)
console.timeEnd('process')

console.trace([message][, ...args])

Añadido en: v0.1.104

Imprime en stderr la cadena 'Trace: ', seguida del mensaje formateado util.format() y el rastreo de pila hasta la posición actual en el código.

js
console.trace('Show me')
// Imprime: (el rastreo de pila variará según dónde se llame a trace)
//  Trace: Show me
//    at repl:2:9
//    at REPLServer.defaultEval (repl.js:248:27)
//    at bound (domain.js:287:14)
//    at REPLServer.runBound [as eval] (domain.js:300:12)
//    at REPLServer.<anonymous> (repl.js:412:12)
//    at emitOne (events.js:82:20)
//    at REPLServer.emit (events.js:169:7)
//    at REPLServer.Interface._onLine (readline.js:210:10)
//    at REPLServer.Interface._line (readline.js:549:8)
//    at REPLServer.Interface._ttyWrite (readline.js:826:14)

console.warn([data][, ...args])

Añadido en: v0.1.100

La función console.warn() es un alias para console.error().

Métodos solo para el Inspector

Los siguientes métodos son expuestos por el motor V8 en la API general, pero no muestran nada a menos que se usen en conjunción con el inspector (bandera --inspect).

console.profile([label])

Añadido en: v8.0.0

Este método no muestra nada a menos que se use en el inspector. El método console.profile() inicia un perfil de CPU de JavaScript con una etiqueta opcional hasta que se llama a console.profileEnd(). El perfil se agrega entonces al panel Perfil del inspector.

js
console.profile('MyLabel')
// Algún código
console.profileEnd('MyLabel')
// Agrega el perfil 'MyLabel' al panel Perfiles del inspector.

console.profileEnd([label])

Añadido en: v8.0.0

Este método no muestra nada a menos que se utilice en el inspector. Detiene la sesión actual de creación de perfiles de CPU de JavaScript si se ha iniciado una y imprime el informe en el panel Perfiles del inspector. Consulte console.profile() para ver un ejemplo.

Si este método se llama sin una etiqueta, se detiene el perfil iniciado más recientemente.

console.timeStamp([label])

Añadido en: v8.0.0

Este método no muestra nada a menos que se utilice en el inspector. El método console.timeStamp() agrega un evento con la etiqueta 'label' al panel Línea de tiempo del inspector.