gpt4 book ai didi

node.js - 你能在 Node.JS Express 应用程序中插入中间件吗

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:17 25 4
gpt4 key购买 nike

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

最佳答案

您当然可以将您的app 对象传递给其他模块并在那里调用use。当然,中间件函数按照它们添加的顺序执行,因此您必须非常小心,以确保以正确的顺序调用use

应用程序.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) {

});
};

就实际注入(inject)一个中间件函数在堆栈的中间(在你已经用一组中间件函数调用app.use之后),有没有记录的方法来做到这一点。 use 仅将函数添加到堆栈的末尾。

use 实际上是由 proto.js 中的 Connect 提供的:

app.use = function(route, fn){

...

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

return this;
};

技术上,您可以自己摆弄app.stack,但我不会这样做。您会弄乱一个未记录的实现细节,该细节可能会更改。换句话说,Connect 或 Express 的 future 更新 可能会破坏您的应用。

关于node.js - 你能在 Node.JS Express 应用程序中插入中间件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com