Node.js v10.12.0 文档


console (控制台)#

查看英文版参与翻译

稳定性: 2 - 稳定的

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

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

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

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

例子,使用全局的 console

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

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('错误信息'));
// 打印: [Error: 错误信息]到 err。

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

查看英文版参与翻译

  • options <Object>

    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> 是否在向输出流写数据时忽略错误, 默认为 true.
    • colorMode <boolean> | <string> 配置该 Console 实例的颜色支持。 设为 true 将会使控制台在检查数据时为其上色,设为 auto 会使是否启用颜色取决于 isTTY 属性的值和对应的数据流的 getColorDepth() 返回的值。默认为 auto

用一个或两个输出流实例创建一个新的 Console。 输出流 stdout 用来记录日志和信息;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> The value tested for being truthy.
  • ...message <any> All arguments besides value are used as error message.

A simple assertion test that verifies whether value is truthy. If it is not, Assertion failed is logged. If provided, the error message is formatted using util.format() by passing along all message arguments. The output is used as the error message.

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

Calling console.assert() with a falsy assertion will only cause the message to be printed to the console without interrupting execution of subsequent code.

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 的内部计数器并且输出到 stdout 指定 label 调用 console.count() 的次数。

> 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> The display label for the counter. Default: 'default'.

Resets the internal counter specific to label.

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

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

查看英文版参与翻译

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

console.dir(obj[, options])#

查看英文版参与翻译

obj 上使用 util.inspect() 并打印结果字符串到 stdout。 该函数会绕过任何定义在 obj 上的自定义的 inspect() 函数。 可选的 options 对象可以传入用于改变被格式化的字符串:

  • showHidden - 如果为 true,则该对象中的不可枚举属性和 symbol 属性也会显示。默认为 false

  • depth - 告诉 util.inspect() 函数当格式化对象时要递归多少次。 这对于检查较大的复杂对象很有用。 默认为 2。 设为 null 可无限递归。

  • colors - 如果为 true,则输出会带有 ANSI 颜色代码。 默认为 false。 颜色是可定制的,详见定制 util.inspect() 颜色

console.dirxml(...data)#

查看英文版参与翻译

This method calls console.log() passing it the arguments received. Please note that this method does not produce any XML formatting.

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

查看英文版参与翻译

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

const code = 5;
console.error('error #%d', code);
// 打印: error #5 到 stderr
console.error('error', code);
// 打印: error 5 到 stderr

如果在第一个字符串中没有找到格式化元素(如 %d),则在每个参数上调用 util.inspect() 并将结果字符串值拼在一起。 详见 util.format()

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

查看英文版参与翻译

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

如果提供了一个或多个 labels,则首先打印这些 labels,而不需要额外的缩进。

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('count: %d', count);
// 打印: count: 5 到 stdout
console.log('count:', count);
// 打印: count: 5 到 stdout

详见 util.format()

console.table(tabularData[, properties])#

查看英文版参与翻译

  • tabularData <any>
  • properties <string[]> Alternate properties for constructing the table.

Try to construct a table with the columns of the properties of tabularData (or use properties) and rows of tabularData and log it. Falls back to just logging the argument if it can’t be parsed as tabular.

// 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。 定时器持续时间精确到亚毫秒。

console.timeEnd([label])#

查看英文版参与翻译

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

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

注意:从 Node.js v6.0.0 开始,console.timeEnd() 删除了计时器以避免泄漏。 在旧版本上,计时器依然保留。 它允许 console.timeEnd() 可以多次调用同一标签。 此功能是非计划中的,不再被支持。

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

查看英文版参与翻译

For a timer that was previously started by calling console.time(), prints the elapsed time and other data arguments to 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');
// 打印: (堆栈跟踪会根据被调用的跟踪的位置而变化)
//  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() 的一个别名。

Inspector only methods#

查看英文版参与翻译

The following methods are exposed by the V8 engine in the general API but do not display anything unless used in conjunction with the inspector (--inspect flag).

console.markTimeline([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. The console.markTimeline() method is the deprecated form of console.timeStamp().

console.profile([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. The console.profile() method starts a JavaScript CPU profile with an optional label until console.profileEnd() is called. The profile is then added to the Profile panel of the inspector.

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

console.profileEnd([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector. See console.profile() for an example.

If this method is called without a label, the most recently started profile is stopped.

console.timeStamp([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. The console.timeStamp() method adds an event with the label 'label' to the Timeline panel of the inspector.

console.timeline([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. The console.timeline() method is the deprecated form of console.time().

console.timelineEnd([label])#

查看英文版参与翻译

This method does not display anything unless used in the inspector. The console.timelineEnd() method is the deprecated form of console.timeEnd().