学习一门语言的过程中,调试这项技能一般是需要先点亮的,比如PHP中的var_dump()、JAVA中的System.out.println()等等。

JS中这个东西叫做控制台console,浏览器中我们一般用console.log()来进行调试输出;而在Node中,console的用法有了更多的诠释。

以下部分翻译自node.js文档-console

Console模块

Console类

new Console(process.stdout, process.stderr)

创建一个新的Console对象可以通过传入一个或两个可写入的Stream实例。

全局的console就是一个传入了process.stdoutprocess.stderr的Console对象。

下面给出一个自定义Console对象的例子。

let fs = require('fs')
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');

// custom simple logger
let Console = require('console').Console

const logger = new Console(output, errorOutput);

// use it like console
const count = 5;
logger.log('count: %d', count);

log/info/warn/error

console.log([data][, ...args])

console.log的用法和浏览器中的基本相同,在node中console.log将信息输出到指定的Stream中,一般情况下为process.stdout

infowarnlog的别名,用法和log相同。

传入该方法的参数,都会通过util.format()方法进行格式化。

error方法会将信息输出到另外一个Stream中,一般为process.stderr

time/timeEnd

console.time(label)
//...
console.timeEnd(label)

这是一组打点的方法,会在标准输出中打印出两段代码中间部分代码的执行时间。

console.time('small loop')
for (var i = 1; i < 10000000; i++) {
}
console.timeEnd('small loop')
//small loop: 9.721ms

assert

console.assert(value[, message][, ...args])

用于断言的方法,如果传入value为非true,那么将会抛出AssertionError,并将后面的参数传入util.format()方法进行格式化错误输出。

在浏览器中,assert方法只会将错误信息打印到控制台上,而在node中,错误将会被抛出,如果没有相关的捕获程序,程序将中止。

dir

console.dir(obj[, options])

dir方法使用util.inspect()方法作用于参数对象,并将输出结果打印到标准输出上。

options有三个选项showHiddendepthcolors