Express调试模块不起作用。

23

我在使用 Windows 操作系统,尝试使用 debug 模块 https://www.npmjs.org/package/debug

我已经安装了 express-generator。

var debug = require('debug')('MyApp');
debug('log'); // I don't see this on console

我试图调试这个变量

console.log(debug); // I get function disabled() {}

如何启用它?默认情况下不应该启用吗?

8个回答

32

debug模块创建的调试函数输出仅在启动脚本时设置适当的环境变量后才会显示。这使您能够选择性地启用调试输出,以便它不是一种全或无的显示调试信息方法。这类似于node.js核心在控制台上显示内部调试信息的方式。

因此,在您的示例中,您需要在shell提示符下执行以下命令:DEBUG=MyApp node foo.js,其中foo.js是包含var debug = require('debug')('MyApp');的脚本。

对于Windows,您需要在命令行上执行set DEBUG=MyApp,然后执行node foo.js


我使用“npm start”来执行,如果按照你的方法执行,它就无法工作,会告诉我“DEBUG”未被识别。一定有一种方法可以为所有文件启用调试器,不是吗? - Nizar Blond
2
你可以先尝试导出变量 (export DEBUG=MyApp),然后再运行 npm start,它应该会产生相同的效果。 - mscdex
Windows用户:请参考@NizarBlond将其翻译为Windows命令提示符表达式的内容。export是OSX/bash shell版本的Windows set命令,用于设置环境变量。 - stone
如果您正在使用 nodemon,似乎无法正常工作,但是当您快速切换以测试解决方案时,这确实有效。 - mtpultz
1
由于nodemon也使用了debug模块,因此可能是debug在被nodemon加载后删除了process.env.DEBUG,这意味着它不会传递给由nodemon生成的子进程。 - mscdex
显示剩余4条评论

8

如果您想在js代码中设置它,

myapp-debug.js

#!/usr/bin/env node

process.env['DEBUG'] = 'myapp:server';
var debug = require('debug')('myapp:server');

// ...
  • 当只有一个可执行文件时,我发现它很有用(在Windows上,你需要设置 node 以打开 .js 文件)

4

我也遇到了相同的问题。最终找到了解决方法

在Windows中,执行以下命令:

set DEBUG=* & node index.js

以上命令应该可以工作。但是在我的VS Code终端中无法正常运行此命令。如果你将此命令写入package.json文件的scripts部分,则它将起作用。

"start": "set DEBUG=app & node app.js"

现在只需在终端中键入以下命令:

npm start

就可以了。


3
在Windows上设置DEBUG=*或您配置的调试名称,例如myApp。在所有JS文件中,每当我想要调试时,我都会像以下语句一样进行配置。
var debug = require('debug')('MyApp'); 

需要调试模块:

require('debug')('MyApp');

//这非常重要。你应该为调试配置一些名称

在Windows上执行时

D:>set DEBUG=MyApp

D:>node <your app file>.js 

D:> node foo.js

2

Windows操作系统不像Linux和其他操作系统那样设置环境变量。

解决方案如下:

set DEBUG=my-application
npm start

1

我也在尝试解决这个问题,至少在我的Windows 10机器上,似乎(从非Linux命令行来看)做法是包含'&'运算符。因此,可以像这样编写:

set DEBUG=my-app & node index.js

0
确保在创建调试日志记录器之前已设置process.env.DEBUG

0

以防万一,如果您无法在终端中运行express debug,请使用

set DEBUG=express:* & node index.js

在Windows上,将

"this": "set DEBUG=express:* & node --experimental-json-modules index.js"

放在package.json的"scripts"中,然后在终端中键入

npm run this

。感谢您的阅读!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接