- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- stream 流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
Node.js v16.20.2 文档
- Node.js v16.20.2
-
目录
- 控制台
- 类:
Consolenew Console(stdout[, stderr][, ignoreErrors])new Console(options)console.assert(value[, ...message])console.clear()console.count([label])console.countReset([label])console.debug(data[, ...args])console.dir(obj[, options])console.dirxml(...data)console.error([data][, ...args])console.group([...label])console.groupCollapsed()console.groupEnd()console.info([data][, ...args])console.log([data][, ...args])console.table(tabularData[, properties])console.time([label])console.timeEnd([label])console.timeLog([label][, ...data])console.trace([message][, ...args])console.warn([data][, ...args])
- 仅限检查器的方法
- 类:
- 控制台
-
导航
- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- stream 流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- 其他版本
控制台#>
【Console】
源代码: lib/console.js
node:console 模块提供了一个简单的调试控制台,类似于网页浏览器提供的 JavaScript 控制台机制。
【The node:console module provides a simple debugging console that is similar to
the JavaScript console mechanism provided by web browsers.】
该模块导出两个特定组件:
【The module exports two specific components:】
- 一个
Console类,包含诸如console.log()、console.error()和console.warn()等方法,可用于写入任何 Node.js 流。 - 一个全局
console实例,配置为写入process.stdout和process.stderr。全局console可以直接使用,无需调用require('node:console')。
警告: 全局 console 对象的方法既不像它们类似的浏览器 API 那样始终是同步的,也不像其他所有 Node.js 流那样始终是异步的。有关更多信息,请参见 关于进程I/O的说明。
【Warning: The global console object's methods are neither consistently synchronous like the browser APIs they resemble, nor are they consistently asynchronous like all other Node.js streams. See the note on process I/O for more information.】
使用全局 console 的示例:
【Example using the global 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 类的示例:
【Example using the Console class:】
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#>
【Class: Console】
Console 类可用于创建具有可配置输出流的简单日志记录器,并且可以通过 require('node:console').Console 或 console.Console(或它们的解构形式)访问:
【The Console class can be used to create a simple logger with configurable
output streams and can be accessed using either require('node:console').Console
or console.Console (or their destructured counterparts):】
const { Console } = require('node: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时,在检查值时启用颜色。设置为false时,在检查值时禁用颜色。设置为'auto'时,颜色支持取决于isTTY属性的值及相应流上getColorDepth()返回的值。如果同时设置了inspectOptions.colors,则不能使用此选项。默认值:'auto'。inspectOptions<Object> 指定传递给util.inspect()的选项。groupIndentation<number> 设置组缩进。默认值:2。
创建一个新的 Console 实例,包含一个或两个可写流实例。stdout 是用于打印日志或信息输出的可写流。stderr 用于输出警告或错误。如果未提供 stderr,则使用 stdout 作为 stderr。
【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
全局 console 是一个特殊的 Console,其输出被发送到 process.stdout 和 process.stderr。它等同于调用:
【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])#>
console.assert() 会在 value 为 假值 或未提供时写入一条消息。它仅写入消息,不会以其他方式影响执行。输出总是以“Assertion failed”开头。如果提供,message 会使用 util.format() 进行格式化。
如果 value 是 真值,则不会发生任何事情。
【If value is truthy, nothing happens.】
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 时,此方法不会执行任何操作。
【When stdout is a TTY, calling console.clear() will attempt to clear the
TTY. When stdout is not a TTY, this method does nothing.】
console.clear() 的具体操作可能因操作系统和终端类型而异。对于大多数 Linux 操作系统,console.clear() 的操作类似于 clear 命令。在 Windows 上,console.clear() 仅会清除 Node.js 二进制文件当前终端视口中的输出。
【The specific operation of console.clear() can vary across operating systems
and terminal types. For most Linux operating systems, console.clear()
operates similarly to the clear shell command. On Windows, console.clear()
will clear only the output in the current terminal viewport for the Node.js
binary.】
console.count([label])#>
label<string> 计数器显示的标签。默认值:'default'。
维护一个特定于 label 的内部计数器,并将调用 console.count() 使用给定 label 的次数输出到 stdout。
【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])#>
label<string> 计数器显示的标签。默认值:'default'。
重置特定于 label 的内部计数器。
【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])#>
console.debug() 函数是 console.log() 的别名。
【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() 函数。
【Uses util.inspect() on obj and prints the resulting string to stdout.
This function bypasses any custom inspect() function defined on obj.】
console.dirxml(...data)#>
...data<any>
此方法调用 console.log() 并传递接收到的参数。此方法不会生成任何 XML 格式。
【This method calls console.log() passing it the arguments received.
This method does not produce any XML formatting.】
console.error([data][, ...args])#>
将内容打印到 stderr 并换行。可以传入多个参数,第一个作为主要消息,其余作为类似于 printf(3) 的替换值(所有参数都会传递给 util.format())。
【Prints to stderr with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3) (the arguments are all passed to
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()。
【If formatting elements (e.g. %d) are not found in the first string then
util.inspect() is called on each argument and the resulting string
values are concatenated. See util.format() for more information.】
console.group([...label])#>
...标签<any>
将后续行的缩进增加 groupIndentation 长度的空格。
【Increases indentation of subsequent lines by spaces for groupIndentation
length.】
如果提供了一个或多个 label,它们会首先被打印出来,而不会增加额外的缩进。
【If one or more labels are provided, those are printed first without the
additional indentation.】
console.groupCollapsed()#>
console.group() 的别名。
【An alias for console.group().】
console.groupEnd()#>
将后续行的缩进减少 groupIndentation 长度的空格数。
【Decreases indentation of subsequent lines by spaces for groupIndentation
length.】
console.info([data][, ...args])#>
console.info() 函数是 console.log() 的别名。
【The console.info() function is an alias for console.log().】
console.log([data][, ...args])#>
将内容打印到 stdout 并换行。可以传入多个参数,第一个作为主要消息,其余作为类似于 printf(3) 的替换值(所有参数都会传递给 util.format())。
【Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3) (the arguments are all passed to
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()。
【See util.format() for more information.】
console.table(tabularData[, properties])#>
tabularData<any>properties<string[]> 构建表格的可选属性。
尝试创建一个表格,列为 tabularData 的属性(或使用 properties),行为 tabularData,并记录它。如果无法解析为表格,则退回到仅记录该参数。
【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<string> 默认值:'default'
启动一个计时器,可用于计算操作的持续时间。计时器通过唯一的 label 来标识。在调用 console.timeEnd() 停止计时器并将经过的时间以适当的时间单位输出到 stdout 时,请使用相同的 label。例如,如果经过的时间为 3869 毫秒,console.timeEnd() 会显示 "3.869s"。
【Starts a timer that can be used to compute the duration of an operation. Timers
are identified by a unique label. Use the same label when calling
console.timeEnd() to stop the timer and output the elapsed time in
suitable time units to stdout. For example, if the elapsed
time is 3869ms, console.timeEnd() displays "3.869s".】
console.timeEnd([label])#>
label<string> 默认值:'default'
停止先前通过调用 console.time() 启动的计时器,并将结果打印到 stdout:
【Stops a timer that was previously started by calling console.time() and
prints the result to 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:
【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() 格式化的消息和当前代码位置的堆栈跟踪。
【Prints to stderr the string 'Trace: ', followed by the util.format()
formatted message and stack trace to the current position in the code.】
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() 的别名。
【The console.warn() function is an alias for console.error().】
仅限检查器的方法#>
【Inspector only methods】
以下方法由 V8 引擎在通用 API 中公开,但除非与 检查器(--inspect 标志)结合使用,否则不会显示任何内容。
【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.profile([label])#>
label<string>
除非在检查器中使用,否则此方法不会显示任何内容。console.profile() 方法启动一个带有可选标签的 JavaScript CPU 分析,直到调用 console.profileEnd()。然后,该分析会被添加到检查器的分析面板中。
【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])#>
label<string>
除非在检查器中使用,否则此方法不会显示任何内容。如果已经启动了当前的 JavaScript CPU 分析会话,它将停止该会话并将报告打印到检查器的 Profiles 面板中。示例请参见 console.profile()。
【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])#>
label<string>
此方法不会显示任何内容,除非在检查器中使用。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.】