bugfix> node.js > 投稿

次のミドルウェアがあり、 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 OKを返すことを期待するでしょう( mymiddleware を削除するとそれが行われます)私のルートから)

回答 1 件
  • ミドルウェア関数が呼び出されたときに返す関数をエクスポートしています。ミドルウェア関数を取得するには、その外部関数を呼び出す必要があります。あなたはそれを呼んでいません。

    したがって、呼び出されない別の関数を返すミドルウェアとして関数を渡すので、 next() を呼び出すことはありません  そのため、ルートが行き詰まったように見えます。

    2つの方法で修正できます。まず、エクスポートを変更して、ストレートミドルウェア関数をエクスポートするだけです。

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

    または、ネストされたアーキテクチャを使用するときにオプションを渡すことができるようにネストしたアーキテクチャを保持する必要がある場合は、実際に呼び出して必要なオプションを渡す必要があります。

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

あなたの答え