控制台没有方法' debug'在Nodejs?

时间:2015-03-03 10:03:47

标签: javascript node.js console

可以在浏览器控制台中调用console.debug()函数。

但是在Nodejs中调用console.debug()时会出现一个错误。

TypeError: Object #<Console> has no method 'debug'
    at Object.<anonymous> (c:\share\node\receive.js:20:9)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

为什么呢?有没有办法替换Nodejs中的console.debug

5 个答案:

答案 0 :(得分:19)

NodeJS中没有console.debug()方法。 Here是控制台对象的文档,因此您可以选择最适合您使用的方法。

答案 1 :(得分:5)

如前所述,node.js中没有console.debug()方法。使用日志,信息,警告,错误方法https://nodejs.org/api/console.html

这就是说你可能会扩展控制台对象以包含一个console.debug()方法,并且只有这个方法在调试模式下才能打印控制台消息。

var isDebugMode = true;

console.debug = function(args)
{
  if (isDebugMode){
    console.log(args);
  }
}

答案 2 :(得分:4)

添加@maninvan回答,我使用变量args语法:

var isDebugMode = true;

console.debug = function(/* ...args */) {
    if(isDebugMode) {
        var vargs = Array.prototype.slice.call(arguments);
        console.log.apply(this, vargs);
    }
}

// or ES6 style
console.debug = (...args) => {
    if(isDebugMode) {
        console.log.apply(this, args)
    }
}

答案 3 :(得分:3)

由于节点9.3.0 console.debug现在默认显示在stdout中。

旧解决方案:

节点v8.0.0中添加了

console.debug(),但通常不会打印到stdout。

您可以使用--inspect--inspect-brk命令行标记查看console.debug消息,并使用devtools控制台选项卡中的“级别”下拉列表启用详细日志记录。

devtools' console tab with default filtering devtools' console tab with no filtering

不幸的是,这并没有将console.debug的输出解压缩到stdout。

stdout in repl

从节点v9.2.0开始,我不知道在stdout中查看console.debug输出的任何方法,只需用console.log包装器替换该函数。

答案 4 :(得分:0)

为console.debug()添加了节点8.10.0及更高版本支持

https://github.com/nodejs/node/commit/162ff56439