我不得不承认,我很惊讶我没有通过谷歌找到任何关于这方面的信息。也许我找得不够仔细。
基本上,我想找到关于Express.js应用程序正在使用的各种中间件功能的信息,最好是通过类似bash
的控制台。记录express()
函数本身不会记录子函数,如trace()
或mkcol()
。这些被显示为express
函数对象的属性,例如trace: [Function]
或emit: [Function: emit]
;它们的主体和当前内容未示出。我能够通过例如记录函数体。express().once.toString()
,如几个答案中所述,包括this one。
这只显示了函数体 * 在我调用它之前 *(当我添加所有中间件时),而不是现在所说的体。它没有显示我的中间件Express use()
。
我如何在控制台中显示这些中间件功能?例如,如果我定义:
express = require('express');
server = express();
flash = require('connect-flash');
bodyParser = require('body-parser');
server.use(flash());
server.use(bodyParser.json());
server.use(bodyParser.urlencoded());
我如何看到Express现在使用了flash
中间件,另外,我如何看到Express现在使用了由connect-flash
模块导出的任何函数组成的中间件?如果这两个方法中的一个或两个都不适用于“whatever the bodyParser.json()/bodyParser.urlencoded()function is”,是否有其他方法来记录它?正如我所说,仅仅console.log
Express的use()
函数是不够的,或者,如果是这样,我也没能找到窍门。定义中间件功能的方法有一百万种& use()
d,所以我不希望有任何答案能适用于所有这些方法,但“尽可能多”会很好。
任何答案都应该适用于嵌套的中间件,例如,Router
和vhost
中间件可以并且通常可以做use()
其他中间件,实际上它们本身就是Express应用程序。
1条答案
按热度按时间mwngjboj1#
我所知道的最接近的事情是运行您的应用程序,其中
DEBUG
环境变量设置为express:router
,如下所示:DEBUG=express:router node server.js
并在使用应用程序时观察输出。许多你用作中间件的函数都是匿名的,因为它们通常是这样定义的:因此,app.get('/foo', function(req, res) {...});
express甚至无法访问路由处理程序函数可读名称等基本内容。