Node.js v10.2.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> 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. Default: 'auto'.

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> 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='default'])#

查看英文版参与翻译

  • label <string> The display label for the counter. Default: 'default'.

Maintains an internal counter specific to label and outputs to stdout the number of times console.count() has been called with the given label.

> 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='default'])#

查看英文版参与翻译

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

重置指定 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.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();
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.

console.profileEnd()#

查看英文版参与翻译

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.

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().