24

app.use追加されたミドルウェアをスタックから削除する正規の方法はありますか? 配列を直接変更するだけでよいようapp.stackですが、最初に検討すべき文書化された方法があるかどうか疑問に思っています。

4

7 に答える 7

24

use実際にはConnect(Expressではありません)から来ており、実際に行うことは、ミドルウェア関数をアプリのstack.

したがって、配列から関数を適切にスプライシングする必要があります。

ただし、ドキュメントはなくapp.stack、ミドルウェアを削除する機能もないことに注意してください。Connect の将来のバージョンでコードと互換性のない変更が行われるリスクがあります。

于 2013-09-03T23:33:40.410 に答える
1

私の知る限り、ミドルウェアを削除する方法はありません。ただし、ブーリアン フラグを割り当てて、いつでもミドルウェアを「非アクティブ化」できます。

let middlewareA_isActivate = true;
// Your middleware code
function(req, res, next) {
   if (!middlewareA_isActivate) next();
   // .........
}
// Deactivate middleware
middlewareA_isActivate = false;

EDIT :
ExpressJs (4.x) コードを読んだ後、ミドルウェア スタックに 経由app._router.stackでアクセスできることに気付きました。操作はそこからだと思います。
それでも、この「トリック」は将来の Express P/sでは機能しない可能性があると思います: ミドルウェア スタックを直接操作するときに Express がどのように動作するかはテストされていません

于 2016-11-16T03:22:03.487 に答える