可以在 Node.JS Express 应用程序中插入中间件吗

2024-01-03

有没有办法在 Express 堆栈中注入中间件?我的意思是我想让我的 app.js 设置主中间件链,然后调用传递应用程序实例的其他模块,他们可能想要插入更多中间件(例如想要在正确位置添加护照的身份验证模块) )


你一定可以通过你的app对象其他模块并调用use那里。当然是执行中间件函数按照添加顺序,所以你必须非常小心,以确保你打电话use以正确的顺序。

app.js

var app = express();
// ...

app.use(express.logger()); // first middleware function

var someOtherModule = require('./mod.js');
someOtherModule.init(app);

app.use(express.static()); // last middleware function)

mod.js

exports.init = function(app) {
    app.use(function(req, res, next) {

    });
};

就实际而言注射堆栈中间的中间件函数(在您已经调用之后app.use使用一组中间件函数),没有记录的方法可以做到这一点。use只将一个函数添加到堆栈末尾。

use实际上是由 Connect 提供的proto.js https://github.com/senchalabs/connect/blob/2.7.0/lib/proto.js#L62-93:

app.use = function(route, fn){

  ...

  this.stack.push({ route: route, handle: fn });

  return this;
};

从技术上来说,你可以摆弄app.stack你自己,但是我不会这样做。您可能会弄乱未记录的实现细节,而该细节很可能会发生变化。换句话说,未来可能会更新eitherConnect 或 Express 可能会破坏您的应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在 Node.JS Express 应用程序中插入中间件吗 的相关文章

  • npm install 的 --save 选项是什么?

    我看到一些教程 其中命令是 npm install save 什么是 save选项是什么意思 更新 npm 5 As of npm 5 0 0 http blog npmjs org post 161081169345 v500 安装的模块
  • lessc:未找到命令

    我使用的是 OS X 8 并且是 Node LESS 的新手 我以为我之前安装了 lessc 当我转到 usr local bin 时 我看到了 lessc 但对于我的生活来说 我无法运行它 每当我运行它时 我都会看到 bash lessc
  • 使用 NVM 安装多个版本的 node.js (Ubuntu)

    如何使用 Ubuntu 在 Ubuntu 中安装多个版本的 Node jsNVM https github com creationix nvm 先验知识 如何使用终端 例如 您可以使用gnome terminal 安装依赖项 sudo a
  • 永远运行 Gulp 脚本?

    是否可以运行 Gulp 脚本forever https www npmjs com package forever 我有 Gulp 脚本想要作为守护进程运行 所以我可以启动 停止 列出它 好的 所以我通过将 gulp 二进制文件从 usr
  • Electron — 无法显示自定义图标

    我在以两种不同的方式设置 Electron 应用程序的图标时遇到问题 非打包 通过终端运行应用程序 我的 main js 确实指定了一个 图标 值 指向图标文件 但它不适用 包装 使用电子包装器 我的 package json 文件指定了
  • 如何在yarn中指定本地注册表?

    我有一个本地 Nexus 服务器 基本上我希望在上线之前先查看一下它prefer offline yarn install prefer offline cache folder C folder yarn cache preferred
  • AJAX 发送数据到 Node.js 服务器

    我尝试使用 AJAX 将数据发送到 Node js 服务器 但不断遇到同样的问题 即接收问题 这是客户端 JavaScript AJAX 代码 var objects function return new XMLHttpRequest f
  • Node.js Async/Await 模块导出 [重复]

    这个问题在这里已经有答案了 我对模块创建有点陌生 想知道 module exports 并等待异步函数 例如 mongo connect 函数 完成并导出结果 在模块中使用 async await 正确定义了变量 但是当尝试通过要求模块来记
  • Nodejs Express 隐式中间件应用于所有路由?

    我想知道 Express 是否允许我创建一个默认调用的路由中间件 而无需我将其明确放置在 app get arg 列表中 NodeJS 新手 var data title blah So I want to include this in
  • IE8 和 9 上的 socket.io 问题

    Socket io 在除 IE8 和 9 之外的所有平台上都能完美运行 这是客户端要求 你们能帮忙解决这个问题吗 我一直在阅读所有类似的问题 但到目前为止我发现的大多数解决方案都无法解决 IE8 上的这个问题 这是结构 服务器端 var i
  • npm 错误! cb.apply 不是函数

    我收到这个错误 npm ERR cb apply is not a function 在Linux中做的时候npm install虽然我的npm版本是6 9 0 我的节点版本是v12 18 3 如何解决这个问题 如果您共享的是 Window
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 使用 TFS 2015 运行 Jest 单元测试

    有人尝试将 jest 单元测试与 TFS 2015 集成吗 我尝试使用 Chutzpah 测试适配器 https visualstudiogallery msdn microsoft com f8741f04 bae4 4900 81c7
  • Node.js:读取 URL 中传递的参数

    在 Rails 中 我向服务器发出 POST 请求 response Typhoeus Request post http url localtunnel com request from ola to ole result JSON pa
  • 使用 ObjectId 键和字符串数组定义映射作为 mongoose 模式中的值

    我在为数据库创建 Mongoose 架构时遇到问题 我想创建一个以 objectId 作为键 以字符串值数组作为值的映射 我能得到的最接近的是 var schema new Schema map myId type mongoose Sch
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • Node.js Express 4.0 中的 res.render 回调参数的用途是什么?

    目的是什么res render回调参数 在什么情况下 由于模板已被指定为第一个参数 因此人们会想要使用这样的回调参数 这是文档中的代码 send the rendered view to the client res render inde
  • 函数不会等到 Promise 得到解决

    我正在开发一个简单的不和谐机器人 我正在尝试打印有关某个玩家的一些一般数据 我最近了解了 async await 并尝试将其实现到我的代码中 然而 它似乎不起作用 因为当我第一次触发此代码时 它会打印 null 但在后续触发时 它将打印正确
  • 如何使用 AMQP 以“PeekLock”模式从 Azure 服务总线队列获取消息?

    我们正在尝试在 Node 应用程序中使用 Azure 服务总线 我们的要求是从队列中获取多条消息 由于Azure SDK for Node不支持批量检索 我们决定使用AMQP 虽然我们能够使用 Peek Messages 获取消息 如此处所

随机推荐

  • 如何在角度组件内提供/模拟 Angularfirestore 模块以通过默认测试?

    如何在我的 app component 中提供 AngularFirestore 模块 以便我的默认toBeTruthy 测试会通过吗 Error StaticInjectorError DynamicTestModule AppCompo
  • 结合绑定到 tableView 处理网络错误(Moya、RxSwift、RxCocoa)

    我目前正在使用 Moya 发出网络请求 我已经从示例项目之一实现了以下内容 https github com DroidsOnRoids RxSwiftExamples tutorials https github com DroidsOn
  • PHFetchResults 日期过滤器未生成时间范围的正确结果

    我正在尝试从照片库中获取两个日期范围内的图像我成功获取图像 https stackoverflow com questions 39587405 how to fetch images from photo library within r
  • .emacs 中区分大小写的 setq 没有效果

    我的 emacs 文件中有很多自定义内容 字体 颜色 窗口大小 键绑定等 所有这些都有效 然后在最后 我只是添加了一个 setq case fold search nil 这是一个变量 当设置为nil应该使搜索在所有 emacs 模式下区分
  • pandas.errors.EmptyDataError:没有要从文件中解析的列

    我创建了一个列表数据类型 它具有三个文件夹的路径 其中每个文件夹都有很多 txt 文件 我试图通过使其成为 pandas 数据框来处理文件夹中的每个文件 但我收到了列出的错误 CODE for l in list for root dirs
  • 在新窗口中打开 Chrome(Chrome 应用)

    我正在尝试创建一个 chrome 应用程序 当我单击按钮时 它会打开一个新的 chrome 窗口 目前它只是打开一个新选项卡 html
  • 如何检查一个值的位奇偶校验是偶数还是奇数?

    一个值有偶校验 https en wikipedia org wiki Parity bit如果它有偶数个 1 位 如果某个值具有奇数个 1 位 则该值具有奇数奇偶校验 例如 0110具有偶数奇偶性 并且1110有奇校验 我必须回来1 if
  • Safari:在卸载之前

    前提条件 你应该在狩猎10 您好 我在请假时遇到困难 保持确认框在不同浏览器中显示在我的页面上 请前往https www biznessapps com cms https www biznessapps com cms 并使用以下凭据登录
  • 在 Chrome 中使用 window.location.reload 从缓存加载和哈希片段不起作用

    我需要用 Javascript 重新加载页面 我用window location reload为了这个目的 现在 我在 Chrome 中观察到一个奇怪的行为 Chrome 总是连接到服务器并询问文档是否被修改 虽然一个304 Not Mod
  • 重新创建 iOS 7 日历 UIView 动画

    每个人都知道 iOS 7 日历应用程序中全新的精彩动画 您可以在这段短视频中看到它们 http vimeo com 69247779 http vimeo com 69247779 我会重新创建类似的东西 创建一个 模式 矩形 当用户点击时
  • 在 ios 7.1 中自定义按钮形状

    苹果已经添加了纽扣形状 http www todaysiphone com 2014 03 switch button shapes ios 7 1 iOS 7 1 中的功能 但我需要让它在我的应用程序中禁用或更改其默认颜色 形状以匹配我的
  • 关于 Android 活动

    我面临着一个与相关的大问题Activity 我的场景如下 我启动活动 A 单击一个按钮 然后从图库中选择一张图像 然后在onActivityResult我打了电话startActivity B 现在 在我的活动 B 中 A 中选择的图像已显
  • AVL树的最小节点数?

    我知道AVL树中最小节点数的公式是 S h S h 1 S h 2 1 然而 我真的不知道如何使用这个函数 假设我们的 AVL 高度为 6 答案告诉我最小值 7 4 1 12 但是你如何得到这个数字呢 我的意思是 当你插入 6 时 不是 6
  • 函数对象属性 __kwdefaults__ 有什么用?

    函数对象有属性 defaults and kwdefaults 我发现如果一个函数有一些默认参数 那么它们将作为一个元组放入 defaults but kwdefaults is None 何时使用属性 kwdefaults def foo
  • 尝试使用 os.makedirs 时出现“OSError:[Errno 17] 文件存在”[重复]

    这个问题在这里已经有答案了 我在集群系统上有几个从 Python 并行运行的线程 每个Python线程输出到一个目录mydir 每个脚本在输出之前检查是否mydir存在 如果不存在则创建它 if not os path isdir mydi
  • 汇编“下面”是否有编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 防止 CHARACTER VARYING 字段中出现空字符串

    我正在使用 PostgreSQL 并希望阻止某些必需的 CHARACTER VARYING VARCHAR 字段允许空字符串输入 这些字段还需要包含唯一值 因此我已经使用了唯一约束 但是 这并不能阻止原始 唯一 空值 基本示例 其中用户名需
  • 如何使用 MFC 应用程序 (C++ Visual Studio 2010) 中的按钮更改图像的可见属性?

    我正在尝试制作一个程序 当按下应用程序中某个名为 隐藏 的按钮时 图像就会消失 我知道在 Windows 窗体应用程序中它会是这样的 pictureBox1 gt Visible true false 但该代码在 MFC 中不起作用 我在M
  • 函数指针有什么用,我将如何使用它们?

    我知道我可以使用函数指针 有人可以解释为什么要使用它们以及如何使用它们吗 简短的示例代码对我非常有帮助 一个简单的情况是这样的 根据您的业务逻辑 您有一系列操作 函数 您有一个哈希函数 可以将输入问题减少到业务逻辑函数之一 干净的代码将具有
  • 可以在 Node.JS Express 应用程序中插入中间件吗

    有没有办法在 Express 堆栈中注入中间件 我的意思是我想让我的 app js 设置主中间件链 然后调用传递应用程序实例的其他模块 他们可能想要插入更多中间件 例如想要在正确位置添加护照的身份验证模块 你一定可以通过你的app对象其他模