Node.js v8.x 中文文档
目录
- console (控制台)
- Console 类
- new Console(stdout[, stderr])
- console.assert(value[, message][, ...args])
- console.clear()
- console.count([label])
- console.countReset([label='default'])
- console.debug(data[, ...args])
- console.dir(obj[, options])
- console.error([data][, ...args])
- console.group([...label])
- console.groupCollapsed()
- console.groupEnd()
- console.info([data][, ...args])
- console.log([data][, ...args])
- console.time(label)
- console.timeEnd(label)
- console.trace([message][, ...args])
- console.warn([data][, ...args])
- Console 类
console (控制台)#
console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。
该模块导出了两个特定的组件:
- 一个
Console类,包含console.log()、console.error()和console.warn()等方法,可以被用于写入到任何 Node.js 流。 - 一个全局的
console实例,可被用于写入到process.stdout和process.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').Console 或 console.Console 使用:
const { Console } = require('console');
const { Console } = console;
new Console(stdout[, stderr])#
stdout<Writable>stderr<Writable>
使用可写流实例来创建新的 Console 对象。
stdout 是一个可写流,用于打印日志或输出信息。
stderr 用于输出警告或错误。
如果没有提供 stderr,则 stdout 会被用于 stderr。
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// 自定义的简单记录器
const logger = new Console(output, errorOutput);
// 像 console 一样使用
const count = 5;
logger.log('count: %d', count);
// stdout.log 中打印: count 5
全局的 console 是一个特殊的 Console 实例,它的输出会发送到 process.stdout 和 process.stderr。
相当于调用:
new Console(process.stdout, process.stderr);
console.assert(value[, message][, ...args])#
value<any>message<any>...args<any>
一个简单的断言测试,验证 value 是否为真。
如果不为真,则抛出 AssertionError。
如果提供了 message,则使用 util.format() 格式化并作为错误信息使用。
console.assert(true, 'does nothing');
// 通过
console.assert(false, 'Whoops %s', 'didn\'t work');
// AssertionError: Whoops didn't work
注意:Node.js 中的 console.assert() 方法与在浏览器中的 console.assert() 方法的实现是不一样的。
具体地说,在浏览器中,用非真的断言调用 console.assert() 会导致 message 被打印到控制台但不会中断后续代码的执行。
而在 Node.js 中,非真的断言会导致抛出 AssertionError。
可以通过扩展 Node.js 的 console 并重写 console.assert() 方法来实现与浏览器中类似的功能。
例子,创建一个简单的模块,并扩展与重写了 Node.js 中 console 的默认行为。
'use strict';
// 用一个新的不带补丁的 assert 实现来创建一个简单的 console 扩展。
const myConsole = Object.create(console, {
assert: {
value: function assert(assertion, message, ...args) {
try {
console.assert(assertion, message, ...args);
} catch (err) {
console.error(err.stack);
}
},
configurable: true,
enumerable: true,
writable: true,
},
});
module.exports = myConsole;
然后可以用来直接替换内置的 console:
const console = require('./myConsole');
console.assert(false, '会打印这个消息,但不会抛出错误');
console.log('这个也会打印');
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='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])#
data<any>...args<any>
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.error([data][, ...args])#
data<any>...args<any>
打印到 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])#
...label<any>
将后续行的缩进增加两个空格。
如果提供了一个或多个 labels,则首先打印这些 labels,而不需要额外的缩进。
console.groupCollapsed()#
console.group()的一个别名.
console.groupEnd()#
将后续行的缩进减少两个空格。
console.info([data][, ...args])#
data<any>...args<any>
console.info() 函数是 console.log() 的一个别名。
console.log([data][, ...args])#
data<any>...args<any>
打印到 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.time(label)#
label<string>
启动一个定时器,用以计算一个操作的持续时间。
定时器由一个唯一的 label 标识。
当调用 console.timeEnd() 时,可以使用相同的 label 来停止定时器,并以毫秒为单位将持续时间输出到 stdout。
定时器持续时间精确到亚毫秒。
console.timeEnd(label)#
label<string>
停止之前通过调用 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])#
message<any>...args<any>
打印字符串 '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])#
data<any>...args<any>
console.warn() 函数是 console.error() 的一个别名。
- 断言测试
- 异步钩子(Async Hooks)
- 缓存(Buffer)
- C++ 插件
- C/C++ 插件 - N-API
- 子进程
- 集群(Cluster)
- 命令行参数
- 控制台(Console)
- 加密(Crypto)
- 调试器
- 废弃的 API
- DNS
- 域(Domain)
- ECMAScript 模块
- 错误(Errors)
- 事件(Events)
- 文件系统
- 全局对象(Globals)
- HTTP
- HTTP/2
- HTTPS
- 检查工具(Inspector)
- 国际化
- 模块(Modules)
- 网络(Net)
- 操作系统(OS)
- 路径(Path)
- 性能钩子(Performance Hooks)
- 进程
- Punycode
- 查询字符串
- 逐行读取
- 交互式解释器(REPL)
- 流(Stream)
- 字符串解码
- 定时器(Timers)
- 安全传输层(TLS/SSL)
- 事件跟踪(Tracing)
- TTY
- UDP / 数据报
- URL
- 工具集
- V8
- 虚拟机(VM)
- 压缩(ZLIB)