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>
将后续行的缩进增加两个空格。
如果提供了一个或多个 label
s,则首先打印这些 label
s,而不需要额外的缩进。
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)