如何将Express中间件包装在一个通用的中间件中?例如,如果我想登录到New Relic并在所有中间件中进行一些日志记录。
const newRelic = require('newrelic');
require('colors');
function BaseMiddleware(wrappedMiddleware) {
return (req, res, next) => {
newRelic.setTransactionName('middleware', wrappedMiddleware.name);
console.log(`middleware: ${wrappedMiddleware.name} run`.green);
return wrappedMiddleware(req, res, next);
};
}
module.exports = BaseMiddleware;并then..in另一个中间件文件:
module.exports = BaseMiddleware(myCustomMiddleware); 这并没有触发正确的思考。它看起来像是在一个无尽的循环中。
发布于 2019-11-07 01:24:45
我只是在我的本地机器上做了以下操作:
function BaseMiddleware(wrappedMiddleware) {
return (req, res, next) => {
console.log(`middleware: ${wrappedMiddleware.name} run`);
return wrappedMiddleware(req, res, next);
};
}
function mw(req, res, next) {
console.log('inside mw');
next();
}
app.use(BaseMiddleware(mw));这一切都是正确的,它正确地记录了:
middleware: mw run
inside mwhttps://stackoverflow.com/questions/58735368
复制相似问题