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 comoconsole.log()
,console.error()
yconsole.warn()
que se pueden usar para escribir en cualquier flujo de Node.js. - Una instancia global
console
configurada para escribir enprocess.stdout
yprocess.stderr
. Se puede usar la consola global sin llamar arequire('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:
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
:
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ón | Cambios |
---|---|
v8.0.0 | Los 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):
import { Console } from 'node:console'
const { Console } = require('node:console')
const { Console } = console
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[Historial]
Versión | Cambios |
---|---|
v14.2.0, v12.17.0 | Se introdujo la opción groupIndentation . |
v11.7.0 | Se introduce la opción inspectOptions . |
v10.0.0 | El constructor Console ahora admite un argumento options , y se introdujo la opción colorMode . |
v8.0.0 | Se 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 deConsole
. Al establecerlo entrue
se habilita la coloración al inspeccionar valores. Al establecerlo enfalse
se deshabilita la coloración al inspeccionar valores. Al establecerlo en'auto'
, la compatibilidad con el color depende del valor de la propiedadisTTY
y del valor devuelto porgetColorDepth()
en la secuencia respectiva. Esta opción no se puede usar si también se estableceinspectOptions.colors
. Predeterminado:'auto'
.inspectOptions
<Object> Especifica las opciones que se pasan autil.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
.
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
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:
new Console({ stdout: process.stdout, stderr: process.stderr })
console.assert(value[, ...message])
[Historial]
Versión | Cambios |
---|---|
v10.0.0 | La implementación ahora cumple con las especificaciones y ya no lanza excepciones. |
v0.1.101 | Añadido en: v0.1.101 |
value
<cualquiera> El valor probado para ser verdadero....message
<cualquiera> Todos los argumentos además devalue
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.
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.
> 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
.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
[Historial]
Versión | Cambios |
---|---|
v8.10.0 | console.debug ahora es un alias para console.log . |
v8.0.0 | Añ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 estrue
, entonces también se mostrarán las propiedades no enumerables y de símbolo del objeto. Predeterminado:false
.depth
<number> Le indica autil.inspect()
cuántas veces debe recurrirse mientras se formatea el objeto. Esto es útil para inspeccionar objetos grandes y complicados. Para que recurra indefinidamente, pasenull
. Predeterminado:2
.colors
<boolean> Si estrue
, entonces la salida se estilizará con códigos de color ANSI. Los colores son personalizables; consulte personalización de los colores deutil.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ón | Cambios |
---|---|
v9.3.0 | console.dirxml ahora llama a console.log para sus argumentos. |
v8.0.0 | Añadido en: v8.0.0 |
...data
<cualquiera>
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
data
<cualquiera>...args
<cualquiera>
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()
).
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
...label
<any>
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()
).
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.
// 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ón | Cambios |
---|---|
v13.0.0 | El tiempo transcurrido se muestra con una unidad de tiempo adecuada. |
v6.0.0 | Este 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.104 | Añ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
:
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
:
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.
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
label
<string>
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.
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
label
<string>
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
label
<string>
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.