Node.js v25.0.0 文档
- Node.js v25.0.0
- 
      
         目录
      - 控制台
- 类:Console- new 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])
 
- 仅限检查器的方法
 
- 类:
 
- 控制台
- 
      
         索引
      
 - 断言测试
- 异步上下文跟踪
- 异步钩子
- 缓冲区
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入器 API
- 子进程
- 集群
- 命令行选项
- 控制台
- 加密
- 调试器
- 已弃用的 API
- 诊断通道
- DNS
- 域
- 环境变量
- 错误
- 事件
- 文件系统
- 全局对象
- HTTP
- HTTP/2
- HTTPS
- 检查器
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:node:moduleAPI
- 模块:包
- 模块:TypeScript
- 网络
- 操作系统
- 路径
- 性能钩子
- 权限
- 进程
- Punycode
- 查询字符串
- 逐行读取
- REPL
- 报告
- 单一可执行文件应用
- SQLite
- 流
- 字符串解码器
- 测试运行器
- 定时器
- TLS/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用工具
- V8
- 虚拟机
- WASI
- Web Crypto API
- Web Streams API
- 工作线程
- Zlib
 
 
- 其他版本
- 选项
Console#
源代码: lib/console.js
node:console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台机制。
该模块导出两个特定的组件
- 一个 Console类,它拥有诸如console.log()、console.error()和console.warn()等方法,可用于写入任何 Node.js 流。
- 一个全局的 console实例,配置为写入process.stdout和process.stderr。全局的console可以在不调用require('node: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').Console 或 console.Console(或它们的解构对应项)来访问。
import { Console } from 'node:console';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> | <Map> 指定传递给- util.inspect()的选项。可以是一个选项对象,或者如果需要为 stdout 和 stderr 指定不同选项,则为一个从流对象到选项的- Map。
- groupIndentation<number> 设置分组缩进。默认值:- 2。
 
用一个或两个可写流实例创建一个新的 Console。stdout 是一个用于打印日志或信息输出的可写流。stderr 用于警告或错误输出。如果未提供 stderr,则 stdout 将用于 stderr。
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;
const output = createWriteStream('./stdout.log');
const errorOutput = 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 5const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;
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。它等同于调用:
new Console({ stdout: process.stdout, stderr: process.stderr }); console.assert(value[, ...message])#
如果 value 为假值或被省略,console.assert() 会写入一条消息。它只写入消息,不影响其他执行。输出总是以 "Assertion failed" 开头。如果提供了 message,则使用 util.format() 对其进行格式化。
如果 value 是真值,则什么也不发生。
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 的内部计数器,并向 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> 计数器的显示标签。默认值:- 'default'。
重置特定于 label 的内部计数器。
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
> 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.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])#
- ...label<any>
将后续行的缩进增加 groupIndentation 长度的空格。
如果提供了一个或多个 label,则首先打印它们,不带额外的缩进。
console.groupCollapsed()#
console.group() 的别名。
console.groupEnd()#
将后续行的缩进减少 groupIndentation 长度的空格。
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<any>
- properties<string[]> 用于构造表格的备用属性。
尝试用 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<string> 默认值:- 'default'
启动一个计时器,可用于计算操作的持续时间。计时器由唯一的 label 标识。在调用 console.timeEnd() 时使用相同的 label 来停止计时器,并以适当的时间单位向 stdout 输出经过的时间。例如,如果经过的时间是 3869 毫秒,console.timeEnd() 将显示 "3.869s"。
console.timeEnd([label])#
- label<string> 默认值:- 'default'
停止先前通过调用 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])#
向 stderr 打印字符串 'Trace: ',其后是使用 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) 仅限检查器的方法#
以下方法由 V8 引擎在通用 API 中公开,但除非与检查器(--inspect 标志)结合使用,否则不会显示任何内容。
console.profile([label])#
- label<string>
除非在检查器中使用,否则此方法不会显示任何内容。console.profile() 方法启动一个 JavaScript CPU 分析,带有一个可选的标签,直到调用 console.profileEnd()。该分析随后会添加到检查器的 Profile 面板中。
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()。
如果调用此方法时不带标签,则会停止最近启动的分析。