代码之家  ›  专栏  ›  技术社区  ›  Juicy

中间件挂起

  •  0
  • Juicy  · 技术社区  · 8 年前

    我有以下中间件,除了调用 next() :

    export default function (options) {
      return function (req, res, next) {
        next()
      };
    }
    

    我试着这样使用它:

    import mymiddleware from '../middlewares/mymiddleware';
    
    router.post('/', mymiddleware, function(req, res, next) {
      res.status(200).send()
    });
    

    当我发布到路线时,它就挂起了。我希望这个能退回200行 mymiddleware 从我的路线)

    1 回复  |  直到 8 年前
        1
  •  1
  •   jfriend00    8 年前

    您正在导出一个在调用中间件函数时返回该函数的函数。您必须调用外部函数才能获得中间件函数。你不是在打电话。

    所以,您将一个函数作为中间件传递,它只返回另一个从未被调用的函数,因此它从不调用 next() 所以你的路线似乎被卡住了。

    你可以用两种方法来解决。首先,您可以将导出更改为只导出直接中间件功能:

    export default function (req, res, next) {
        next()
    }
    

    或者,第二,如果您需要保留嵌套架构,以便在使用它时可以传递它的选项,则必须实际调用它并将所需的选项传递给它:

    import mymiddleware from '../middlewares/mymiddleware';
    
    router.post('/', mymiddleware(someOptions), function(req, res, next) {
      res.status(200).send()
    });
    
    推荐文章