在 NodeJS/ExpressJS 的中间件中调用中间件

马丁

我创建了一些带有一些逻辑的标准中间件,根据逻辑我需要调用一些 3rd 方中间件。

中间件是使用 app.use() 添加的,这是我添加自定义中间件的地方。

一旦进入我的中间件,我就无法再访问 app.use(),我该如何调用中间件?

这是一些代码:

有任何想法吗 ?

const customerData = (req, res, next) => {
  try {
    console.log('Started');
    if (process.env.STORE_CUSTOMER_DATA === 'true') {

        // Here is some custom middleware that doesn't belong to me
        //
        // Returns a function (I confirmed it) ready to be called with res,req, next
        //
        let externalMiddlware = logger({
          custom:true
        });

// Do I return it ? Call it ? Trying everything and nothing seems to work

        externalMiddlware(req,res,next);  // ???
    } else {

      // DO not call external middleware, will break out of if and then call next()
    }
    console.log('Finished');
    next();
  } catch (err) {
    next(err);
  }
};

module.exports = customerData;
皮埃尔·马莱

我认为这应该可行,但如果您将回调委托给其他外部中间件,则不应在 customerData 中调用 next() 使用第三个中间件

所以你有没有尝试

const customerData = (req, res, next) => {
  try {
    console.log('Started');
    if (process.env.STORE_CUSTOMER_DATA === 'true') {
        let externalMiddlware = logger({
          custom:true
        });
        return externalMiddlware(req,res,next); 
    } else {
        return next(); // <= next moved
    }
  } catch (err) {
    next(err);
  }
};

module.exports = customerData;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章