Node.js v18.18.2 文档


目录

控制台#

稳定性:2 - 稳定

源代码: lib/console.js

node:console模块提供了一个简单的调试控制台,类似于网络浏览器提供的 JavaScript 控制台机制。

该模块导出两个特定组件:

  • 具有console.log()console.error()console.warn()等方法的 Console 类,可用于写入任何 Node.js 流。
  • 配置为写入process.stdoutprocess.stderr的全局console实例。无需调用require('node:console')即可使用 全局console

警告:全局控制台对象的方法既不像它们类似的浏览器 API 那样始终同步,也不像所有其他 Node.js 流那样始终异步。有关详细信息,请参阅有关进程 I/O 的注释。

使用全局console 的示例:

console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to 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!`);
// Prints: Danger Will Robinson! Danger!, to stderr 

使用Console类的示例:

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

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

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

类:Console#

Console类可用于创建具有可配置输出流的简单记录器,并且可以使用require('node:console').Consoleconsole.Console(或其解构对应项)进行访问:

const { Console } = require('node:console'); 
const { Console } = console; 

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

new Console(options)#

  • options <对象>
    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean>写入底层流时忽略错误。默认值: true
    • colorMode <布尔值> | <string>设置此Console实例的颜色支持。设置为true可以在检查值时启用着色。设置为 false会在检查值时禁用着色。设置为 'auto'会使颜色支持取决于isTTY属性的值以及相应流上getColorDepth()返回的值。如果还设置了 inspectOptions.colors,则无法使用此选项。默认值: 'auto'
    • inspectOptions <Object>指定传递给 util.inspect()的选项。
    • groupIndentation <number>设置组缩进。 默认值: 2

创建一个具有一两个可写流实例的新Consolestdout是用于打印日志或信息输出的可写流。stderr用于警告或错误输出。如果未提供stderr ,则 stdout用于stderr

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5 

全局console是一个特殊的Console,其输出发送到 process.stdoutprocess.stderr。它相当于调用:

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

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

  • value <any>测试是否真实的值。
  • ...message <any>除value之外的所有参数都用作错误消息。

如果value假或被省略,则console.assert()写入一条消息。它只写入一条消息,不会以其他方式影响执行。输出始终以"Assertion failed"开头。如果提供,则message使用 util.format()进行格式化。

如果valuetrue,则不会发生任何事情。

console.assert(true, 'does nothing');

console.assert(false, 'Whoops %s work', 'didn\'t');
// Assertion failed: Whoops didn't work

console.assert();
// Assertion failed 

console.clear()#

stdout是 TTY 时,调用console.clear()将尝试清除 TTY。当stdout不是 TTY 时,此方法不执行任何操作。

console.clear()的具体操作可能因操作系统和终端类型而异。对于大多数 Linux 操作系统,console.clear()的操作与clear shell 命令 类似。在 Windows 上,console.clear() 将仅清除当前终端视口中 Node.js 二进制文件的输出。

console.count([label])#

  • label <string>计数器的显示标签。默认值: 'default'

维护一个特定于label的内部计数器,并将使用给定的label调用console.count()的次数输出到stdout

> 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])#

  • label <string>计数器的显示标签。默认值: 'default'

重置特定于label的内部计数器。

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

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

console.debug()函数是console.log()的别名。

console.dir(obj[, options])#

  • obj <任意>
  • options <对象>
    • showHidden <boolean>如果true则对象的不可枚举和符号属性也会显示。默认值: false
    • depth <number>告诉util.inspect()在格式化对象时要递归多少次。这对于检查大型复杂物体很有用。要使其无限递归,请传递null默认值: 2
    • colors <boolean>如果为true,则输出将采用 ANSI 颜色代码样式。颜色可定制;请参阅自定义util.inspect()颜色默认值: false

obj上使用util.inspect()并将结果字符串打印到stdout。此函数会绕过obj上定义的任何自定义 inspect()函数。

console.dirxml(...data)#

此方法调用console.log()并将收到的参数传递给它。此方法不会生成任何 XML 格式。

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

打印到带有换行符的stderr。可以传递多个参数,第一个用作主要消息,所有附加参数用作类似于printf(3)的替换值(参数全部传递到 util.format())。

const code = 5;
console.error('error #%d', code);
// Prints: error #5, to stderr
console.error('error', code);
// Prints: error 5, to stderr 

如果在第一个字符串中未找到 格式化元素(例如%d ),则对每个参数调用util.inspect()并将生成的字符串值连接起来。请参阅util.format()了解更多信息。

console.group([...label])#

将后续行的缩进增加groupIndentation长度的空格 。

如果提供了一个或多个label ,则首先打印这些内容,而不添加额外的缩进。

console.groupCollapsed()#

console.group()的别名。

console.groupEnd()#

将后续行的缩进减少groupIndentation长度的空格 。

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

console.info()函数是console.log()的别名。

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

打印到带有换行符的stdout。可以传递多个参数,第一个用作主要消息,所有附加参数用作类似于printf(3)的替换值(参数全部传递到 util.format())。

const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout 

请参阅util.format()了解更多信息。

console.table(tabularData[, properties])#

尝试构建一个包含tabularData属性列 (或使用properties)和tabularData行的表并记录它。如果无法将参数解析为表格,则退回到仅记录参数。

// These can't be parsed as tabular data
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])#

启动一个可用于计算操作持续时间的计时器。计时器由唯一的label标识。调用console.timeEnd()时 使用相同的label来停止计时器,并将经过的时间以合适的时间单位输出到stdout。例如,如果经过的时间是 3869ms,则console.timeEnd()显示“3.869s”。

console.timeEnd([label])#

停止之前通过调用console.time()启动的计时器并将结果打印到stdout

console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms 

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

对于之前通过调用console.time()启动的计时器,将经过的时间和其他data参数打印到stdout

console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process'); 

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

将字符串'Trace: '打印到stderr,后跟util.format() 格式的消息和代码中当前位置的堆栈跟踪。

console.trace('Show me');
// Prints: (stack trace will vary based on where trace is called)
//  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])#

console.warn()函数是console.error()的别名。

仅检查器方法#

以下方法由 V8 引擎在通用 API 中公开,但不会显示任何内容,除非与检查器 --inspect标志)结合使用。

console.profile([label])#

除非在检查器中使用,否则此方法不会显示任何内容。console.profile()方法 使用可选标签启动 JavaScript CPU 配置文件,直到调用console.profileEnd()为止。然后,该配置文件将添加到检查器的“配置文件”面板中。

console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector. 

console.profileEnd([label])#

除非在检查器中使用,否则此方法不会显示任何内容。如果当前 JavaScript CPU 分析会话已启动,则停止当前 JavaScript CPU 分析会话,并将报告打印到检查器的“配置文件”面板。有关示例,请参阅 console.profile()

如果在没有标签的情况下调用此方法,则最近启动的配置文件将停止。

console.timeStamp([label])#

除非在检查器中使用,否则此方法不会显示任何内容。console.timeStamp()方法 将带有标签'label'的事件添加到 检查器的时间轴面板。

NodeJS中文文档为Read dev Docs平台提供托管,中文NodeJS文档均由英文版NodeJS文档翻译,版权属于nodejs.org