如何使用基本中间件包装Express中间件

如何将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,next);
  };
}

module.exports = BaseMiddleware;

然后..在另一个中间件文件中:

module.exports = BaseMiddleware(myCustomMiddleware);   

这没有引发正确的思考。似乎是一个无尽的循环。

songxiayehu 回答:如何使用基本中间件包装Express中间件

我只是在本地计算机上完成的

no provider for...

所有操作均正确进行,并正确记录:

function BaseMiddleware(wrappedMiddleware) {
  return (req,res,next) => {
    console.log(`middleware: ${wrappedMiddleware.name} run`);
    return wrappedMiddleware(req,next);
  };
}

function mw(req,next) {
  console.log('inside mw');
  next();
}

app.use(BaseMiddleware(mw));
本文链接:https://www.f2er.com/3150193.html

大家都在问