NodeJS 在控制台中显示附加中间件功能

9wbgstp7  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(134)

我不得不承认,我很惊讶我没有通过谷歌找到任何关于这方面的信息。也许我找得不够仔细。
基本上,我想找到关于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,所以我不希望有任何答案能适用于所有这些方法,但“尽可能多”会很好。
任何答案都应该适用于嵌套的中间件,例如,Routervhost中间件可以并且通常可以做use()其他中间件,实际上它们本身就是Express应用程序。

mwngjboj

mwngjboj1#

我所知道的最接近的事情是运行您的应用程序,其中DEBUG环境变量设置为express:router,如下所示:DEBUG=express:router node server.js并在使用应用程序时观察输出。许多你用作中间件的函数都是匿名的,因为它们通常是这样定义的:因此,app.get('/foo', function(req, res) {...}); express甚至无法访问路由处理程序函数可读名称等基本内容。

相关问题