2016-11-18 14 views
0

いくつかの処理が必要なミドルウェアを使用しているサービスを実装しているモジュールがあります。異なるモジュールからミドルウェアを複数回 "使用"できますか?

module.exports = function(options) { 
    ... 
    app.use(busboy()) 
    ... 
    return module 
} 

同じミドルウェアを使用する必要がある別のモジュールがある場合は、同じ呼び出しを行います。各モジュールはプラグインであり、他のモジュールについては知らないので、プラグインが使用するミドルウェアごとにグローバル変数を作成するのは良い設計とは言えません。そして、このquestionの答えによれば、ミドルウェアが既にロードされているかどうかをチェックするのは簡単なことではないようです。

今のところ、ミドルウェアは複数の場所で使用されていませんが、将来はそれが問題になるでしょうか?もしそうなら、その解決策は何ですか?

答えて

1

特定のミドルウェアを特定のルーター/ルートに使用する必要がある場合は、アプリケーション全体ではなく、それらのルーター/ルートだけに含める必要があります。だからではなく、本の

app.use(middleware); 

あなたはこれを使用することができます:

let router = express.Router(); 

router.use(middleware); 
router.get('/', ...); 

// and return/export the router 

routersを使用すると、あなたのアプリがよりモジュラーなります。

+0

この変更を行うと問題のルートは存在しなくなりました...追加する必要があるのは何ですか? – Michael

+0

@Michaelは、あなたのアプリやルートの構造に完全に依存しています。 – robertklep

+0

okだから、この特定のモジュールの前と後に来るapp.get、app.use、app.postへの他の呼び出しがあります。この特定のルートと一致する必要のあるURLを使用すると、最後にすべてがキャッチされます。この特定のルートを使用して要求を処理しない理由を解決するにはどうすればよいですか? – Michael

関連する問題