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

时间:2014-07-17 05:04:37

标签: javascript node.js express console connect

我不得不承认,我很惊讶我没有通过Google找到任何相关信息。也许我看起来不够努力。

基本上,我想查找有关我的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模块导出的任何函数?如果其中一个或两个都不适用于"无论bodyParser.json()/ bodyParser.urlencoded()函数是",还有另一种记录方法吗?正如我所说,仅仅console.log表达use()功能是不够的,或者,如果是,我无法找到技巧。有一百万种方法可以定义中间件功能。 use() d,所以我不希望任何答案为所有人工作,但是尽可能多的""会很好。

任何答案都应该适用于嵌套中间件,例如,Routervhost中间件可以并且通常会use()其他中间件,实际上是Express应用程序自己。

1 个答案:

答案 0 :(得分:1)

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