Comment envelopper un middleware Express dans un middleware commun? Par exemple, si je veux me connecter à New Relic et me connecter à tous les middlewares.

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;

Et puis..dans un autre fichier middleware:

module.exports = BaseMiddleware(myCustomMiddleware);   

Cela ne déclenche pas correctement la pensée. Il semble que ce soit dans une boucle sans fin.

0
GN. 6 nov. 2019 à 20:14

1 réponse

Je viens de le faire sur ma machine locale:

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));

Et tout s'est déroulé correctement, avec une journalisation correcte:

middleware: mw run
inside mw
0
TKoL 6 nov. 2019 à 17:24