控制台在 Nodejs 中没有方法 'debug'?
Console has no method 'debug' in Nodejs?
可以在浏览器控制台中调用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
吗?
NodeJS 中没有 console.debug() 方法。 Here 是控制台对象的文档,因此您可以选择最适合您的方法来使用。
正如前面的回答所述,node.js 中没有 console.debug() 方法。使用日志、信息、警告、错误方法 https://nodejs.org/api/console.html
也就是说,您可能需要扩展控制台对象以包含 console.debug() 方法,并且仅在调试模式下使用此方法打印控制台消息。
var isDebugMode = true;
console.debug = function(args)
{
if (isDebugMode){
console.log(args);
}
}
添加到@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)
}
}
因为节点 9.3.0 console.debug 现在默认显示在标准输出中。
旧解决方案:
console.debug()
已添加到节点 v8.0.0 中,但通常不会打印到标准输出。
您可以使用 --inspect
或 --inspect-brk
命令行标志并使用开发工具控制台选项卡中的 "levels" 下拉菜单启用详细日志记录来查看 console.debug 消息。
不幸的是,这并没有消除 console.debug
到标准输出的输出。
从节点 v9.2.0 开始,除了用 console.log 包装器替换函数外,我不知道有什么方法可以在标准输出中查看 console.debug
的输出。
已为 console.debug()
添加了节点 8.10.0 及更高版本的支持
正如 documentation 历史所说:
v8.10.0 console.debug is now an alias for console.log
虽然用您自己的函数覆盖它很容易,但我更喜欢扩展 console
并使用我自己的 debug
方法,如本例所示:
xconsole = Object.create(console);
xconsole.debug = function (...line) {
if (process.env.NODE_ENV === "development") {
console.log(...line);
}
}
这使得 console.debug
保持不变。我在自己的文件中有这个,我 可以在其他模块中使用它。我可以改用新函数,如下所示:
xconsole.debug("This will only show if NODE_ENV is set to development");
xconsole.log("This will always show");
当然,可以有很多变化。请参阅 NODE_ENV
上的 info。
我使用这种方法方便地在 docker 容器上启用调试模式。我在 ~/.bashrc
到 propagate the environment variables 上有一个别名,因为我需要 运行 docker 和 sudo
:
alias docker='sudo -E docker'
如果我需要启用调试模式,它就像 export NODE_ENV=development
一样简单。测试:
docker run --name test -d -e NODE_ENV node:17-bullseye env
我可以看到 NODE_ENV=development
和 docker logs test
。 exporting environment variables to root(-E
)的时候注意安全就好了,不过这对我的开发环境来说没问题。
可以在浏览器控制台中调用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
吗?
NodeJS 中没有 console.debug() 方法。 Here 是控制台对象的文档,因此您可以选择最适合您的方法来使用。
正如前面的回答所述,node.js 中没有 console.debug() 方法。使用日志、信息、警告、错误方法 https://nodejs.org/api/console.html
也就是说,您可能需要扩展控制台对象以包含 console.debug() 方法,并且仅在调试模式下使用此方法打印控制台消息。
var isDebugMode = true;
console.debug = function(args)
{
if (isDebugMode){
console.log(args);
}
}
添加到@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)
}
}
因为节点 9.3.0 console.debug 现在默认显示在标准输出中。
旧解决方案:
console.debug()
已添加到节点 v8.0.0 中,但通常不会打印到标准输出。
您可以使用 --inspect
或 --inspect-brk
命令行标志并使用开发工具控制台选项卡中的 "levels" 下拉菜单启用详细日志记录来查看 console.debug 消息。
不幸的是,这并没有消除 console.debug
到标准输出的输出。
从节点 v9.2.0 开始,除了用 console.log 包装器替换函数外,我不知道有什么方法可以在标准输出中查看 console.debug
的输出。
已为 console.debug()
添加了节点 8.10.0 及更高版本的支持正如 documentation 历史所说:
v8.10.0 console.debug is now an alias for console.log
虽然用您自己的函数覆盖它很容易,但我更喜欢扩展 console
并使用我自己的 debug
方法,如本例所示:
xconsole = Object.create(console);
xconsole.debug = function (...line) {
if (process.env.NODE_ENV === "development") {
console.log(...line);
}
}
这使得 console.debug
保持不变。我在自己的文件中有这个,我
xconsole.debug("This will only show if NODE_ENV is set to development");
xconsole.log("This will always show");
当然,可以有很多变化。请参阅 NODE_ENV
上的 info。
我使用这种方法方便地在 docker 容器上启用调试模式。我在 ~/.bashrc
到 propagate the environment variables 上有一个别名,因为我需要 运行 docker 和 sudo
:
alias docker='sudo -E docker'
如果我需要启用调试模式,它就像 export NODE_ENV=development
一样简单。测试:
docker run --name test -d -e NODE_ENV node:17-bullseye env
我可以看到 NODE_ENV=development
和 docker logs test
。 exporting environment variables to root(-E
)的时候注意安全就好了,不过这对我的开发环境来说没问题。