Node.js v12.4.0 文档


console(控制台)#

中英对照提交修改

稳定性: 2 - 稳定

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

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

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

注意:全局的 console 对象的方法既不像浏览器中的 API 那样总是同步的,也不像其他 Node.js 流那样总是异步的。 详见进程 I/O

使用全局 console 的示例:

console.log('你好世界');
// 打印到 stdout: 你好世界
console.log('你好%s', '世界');
// 打印到 stdout: 你好世界
console.error(new Error('错误信息'));
// 打印到 stderr: [Error: 错误信息]

const name = '描述';
console.warn(`警告${name}`);
// 打印到 stderr: 警告描述

使用 Console 类的示例:

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

myConsole.log('你好世界');
// 打印到 out: 你好世界
myConsole.log('你好%s', '世界');
// 打印到 out: 你好世界
myConsole.error(new Error('错误信息'));
// 打印到 err: [Error: 错误信息]

const name = '描述';
myConsole.warn(`警告${name}`);
// 打印到 err: 警告描述

Console 类#

中英对照提交修改

Console 类可用于创建具有可配置的输出流的简单记录器,可以使用 require('console').Consoleconsole.Console(或其结构化对应物)访问:

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

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

new Console(options)#

查看v10.x中文文档

  • options <Object>

    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> Ignore errors when writing to the underlying streams. Default: true.
    • colorMode <boolean> | <string> Set color support for this Console instance. Setting to true enables coloring while inspecting values, setting to 'auto' will make color support depend on the value of the isTTY property and the value returned by getColorDepth() on the respective stream. This option can not be used, if inspectOptions.colors is set as well. Default: 'auto'.
    • inspectOptions <Object> Specifies options that are passed along to util.inspect().

Creates a new Console with one or two writable stream instances. stdout is a writable stream to print log or info output. stderr is used for warning or error output. If stderr is not provided, stdout is used for 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

The global console is a special Console whose output is sent to process.stdout and process.stderr. It is equivalent to calling:

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

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

中英对照提交修改

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

一个简单的断言测试,用于验证 value 是否为真。 如果不是,则记录 Assertion failed。 如果提供 message,则通过传入所有消息参数来使用 util.format() 格式化错误消息。 输出用作错误消息。

console.assert(true, '什么都不做');
// OK
console.assert(false, '%s 工作', '无法');
// Assertion failed: 无法工作

使用非真的断言调用 console.assert() 只会导致打印 message 到控制台而不会中断后续代码的执行。

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

查看v10.x中文文档

The console.debug() function is an alias for console.log().

console.dir(obj[, options])#

中英对照提交修改

  • obj <any>
  • options <Object>

    • 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);
// 打印到 stderr: error #5
console.error('error', code);
// 打印到 stderr: error 5

如果在第一个字符串中找不到格式化元素(例如 %d),则会在每个参数上调用 util.inspect(),并且连接结果字符串值。 有关更多信息,请参见 util.format()

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

中英对照提交修改

将后续行的缩进增加两个空格。

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

console.groupCollapsed()#

中英对照提交修改

console.group() 的别名。

console.groupEnd()#

中英对照提交修改

减少后续行的缩进两个空格。

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

中英对照提交修改

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

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

中英对照提交修改

打印到 stdout,并加上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const count = 5;
console.log('计数: %d', count);
// 打印到 stdout: 计数: 5 
console.log('计数:', count);
// 打印到 stdout: 计数: 5 

有关更多信息,请参见 util.format()

console.table(tabularData[, properties])#

中英对照提交修改

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

// 这些不能解析为表格数据。
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 <string> 默认值: 'default'

启动一个计时器,用以计算一个操作的持续时间。 计时器由一个唯一的 label 标识。 当调用 console.timeEnd() 时,可以使用相同的 label 来停止计时器,并以毫秒为单位将持续时间输出到 stdout。 计时器持续时间精确到亚毫秒。

console.timeEnd([label])#

中英对照提交修改

  • label <string> 默认值: 'default'

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

console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// 打印 100-elements: 225.438ms

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

中英对照提交修改

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

console.time('process');
const value = expensiveProcess1(); // 返回 42
console.timeLog('process', value);
// 打印 "process: 365.227ms 42"。
doExpensiveProcess2(value);
console.timeEnd('process');

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

中英对照提交修改

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

console.trace('展示');
// 打印: (堆栈跟踪将根据调用跟踪的位置而有所不同)
//  Trace: 展示
//    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.markTimeline([label])#

中英对照提交修改

  • label <string> 默认值: 'default'

除非在检查器中使用,否则此方法不显示任何内容。 console.markTimeline() 方法是 console.timeStamp() 的废弃形式。

console.profile([label])#

中英对照提交修改

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

console.profile('MyLabel');
// 一些代码
console.profileEnd('MyLabel');
// 将配置文件 'MyLabel' 添加到检查器的 Profiles 面板中。

console.profileEnd([label])#

中英对照提交修改

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

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

console.timeStamp([label])#

中英对照提交修改

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

console.timeline([label])#

中英对照提交修改

  • label <string> 默认值: 'default'

除非在检查器中使用,否则此方法不显示任何内容。 console.timeline() 方法是 console.time() 的弃用形式。

console.timelineEnd([label])#

中英对照提交修改

  • label <string> 默认值: 'default'

除非在检查器中使用,否则此方法不显示任何内容。 console.timelineEnd() 方法是 console.timeEnd() 的弃用形式。