如何解决npm-debug 模块:如何以编程方式启用和禁用调试目标?
在用于 Visionmedia 的用于 Node.js 的 debug
模块的 documentation 中,我看到可以以编程方式启用和禁用不同的调试目标。
我这样做的尝试并不成功。
我创建了一个准系统脚本:test.js
const debug = require("debug");
let test = debug("test"); // created before being enabled
console.log(1,debug.enabled("test"));
let namespaces = debug.enable("test");
// test = debug("test");
console.log(2,debug.enabled("test"));
console.log("enabled namespaces:",namespaces);
test("this is test");
namespaces = debug.disable();
// test = debug("test");
console.log(3,debug.enabled("test"));
console.log("disabled namespaces:",namespaces);
test("you shouldn't see this");
当我使用 node test.js
运行脚本时,我得到以下输出,这表明 debug.enable("test")
既没有启用 test
调试目标,也没有返回任何命名空间:>
1 false
2 true
enabled namespaces: undefined
3 false
disabled namespaces: undefined
当我使用 DEBUG=test node test.js
运行脚本时,我得到以下输出,这表明 debug.disable("test")
既没有禁用 test
调试目标,也没有返回任何禁用的名称命名空间:
1 true
2 true
enabled namespaces: undefined
test this is test +0ms
3 false
disabled namespaces: undefined
test you shouldn't see this +0ms
但是,如果我使用 test
或 .enable()
取消注释重新创建 .disable()
调试目标 after 的行,则一切正常。
看来,为了能够以编程方式启用和禁用调试目标,我需要使用不同的语法:
debug("test")("message which can be enabled or disabled");
但是好像这样每次使用都会创建一个新的调试实例,会很浪费。它不是文档中描述的标准语法。即便如此,.enabled()
和 .disabled()
方法也不会返回命名空间列表。
是否有什么地方被我严重误解了?
解决方法
该问题是因为我依赖安装为 debug
依赖项的 express
版本。事实证明,当前版本的 express
需要过时的 debug
版本。
今天(2021 年 6 月 27 日)运行 npm install express
后,debug
中 package-lock.json
的条目如下。
"debug": {
"version": "2.6.9","resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz","integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==","requires": {
"ms": "2.0.0"
}
“版本”:“2.6.9”
(这是 express
的“4.17.1”版本。)
这是因为 package.json
的 express
文件显式调用 "debug": "2.6.9"
。
运行 npm update
对此没有影响。
运行 npm install debug
确实可以解决问题。 debug
中 package-lock.json
的条目设置如下:
"debug": {
"version": "4.3.1","resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz","integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==","requires": {
"ms": "2.1.2"
}
“版本”:“4.3.1”
问题解决了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。