gpt4 book ai didi

javascript - 依赖于正在使用的另一个中间件的 NodeJs 和 ExpressJs 中间件

转载 作者:搜寻专家 更新时间:2023-11-01 00:39:13 25 4
gpt4 key购买 nike

我正在创建一个快速中间件。我的 index.js 导出是一个函数,它返回一个 function(req,res,next) {...}

function myMiddleware (options) {
//some stuff with options...
return function middleware(req, res, next) {
//stuff
}
}

module.exports = myMiddleware;

所以用户可以像这样开始使用我的中间件:

var express = require('express'),
myMiddleware = require('my-middleware'),

app = express();
app.use(myMiddleware());

重要的是我必须确保中间件可以访问 cookie。当然,我可以自己解析 req.header.cookie,但是有一个 cookie-parser 模块可以帮我解析。

所以我想确保在我的中间件启动时已经使用了 cookie-parser 中间件。我可能会指示用户首先使用 cookieParser() 但我不喜欢它。

有什么方法可以轻松做到吗?

编辑

我什至可以移植 cookie-parser,因为它不是一个巨大的模块。但这可能是我最少要做的事情,因为它会引入很多我通常不会做的维护工作。

最佳答案

你有两个选择:

如果 req.cookies 未定义,则强制使用 cookie-parser 中间件。如果 cookie-parser 已经被调用,这个调用将被忽略。请参阅:https://github.com/expressjs/cookie-parser/blob/master/index.js

这种方法的缺点是 cookieParser 中间件将只有默认选项。

var cookieParser = require('cookie-parser');

function myMiddleware(options) {
return function(req, res, next) {
return cookieParser()(req, res, function() {
// Your middleware code
return next();
});
}
}

如果 req.cookies 未定义则发出警告

function myMiddleware(options) {
return function(req, res, next) {
if(!req.cookies) {
// Some warning
}
// Your middleware code
return next();
}
}

关于javascript - 依赖于正在使用的另一个中间件的 NodeJs 和 ExpressJs 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40891095/

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