【问题标题】:Show Attached Middleware Functions in Console在控制台中显示附加的中间件函数
【发布时间】:2014-07-17 05:04:36
【问题描述】:

我不得不承认,我很惊讶我没有通过 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 Express 的use() 函数是不够的,或者,如果是,我无法找到诀窍。有上百万种方法可以定义中间件函数 & use()d,所以我不希望任何答案都适用于所有这些方法,但“尽可能多”会很好。

任何答案都应该适用于嵌套中间件,例如,Routervhost 中间件可以而且通常可以用于 use() 其他中间件,实际上它们本身就是 Express 应用程序。

【问题讨论】:

  • 哇,这个问题很快就被夸大了,我希望这个问题需要 2 秒才能问/回答。如果我完全混淆了你,我相信我会,请告诉我,我会让人给我一个 v8,然后为你澄清。

标签: javascript node.js express console connect


【解决方案1】:

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

【讨论】:

  • 这有点糟糕,但无论我在做什么,您的解决方案都必须足够好。谢谢。
  • 是的,我同意它缺乏。我认为 express 的简洁和随心所欲的 API 和设计使您正在寻找的那种内省驱动的文档基本上不可能以编程方式创建。但也许/希望我错了,其他人发布了更好的答案。
  • 也许吧,但现在我接受你的回答。顺便说一句,我总是觉得很有趣 SO 人们如何要求其他 SO 人投票/接受其他 SO 人的答案,而不是他们的答案。
猜你喜欢
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多