Expressスタックにミドルウェアを注入する方法はありますか?つまり、app.jsにメインのミドルウェアチェーンをセットアップさせてから、アプリインスタンスを渡す他のモジュールを呼び出し、さらにミドルウェアを挿入したい場合があります(たとえば、正しい場所にパスポートを追加したい認証モジュール)。 )。
8898 次
3 に答える
14
あなたは確かにあなたのapp
オブジェクトを他のモジュールに渡してuse
そこで呼び出すことができます。もちろん、ミドルウェア関数は追加された順序でuse
実行されるため、正しい順序で呼び出すように細心の注意を払う必要があります。
app.js
var app = express();
// ...
app.use(express.logger()); // first middleware function
var someOtherModule = require('./mod.js');
someOtherModule.init(app);
app.use(express.static()); // last middleware function)
mod.js
exports.init = function(app) {
app.use(function(req, res, next) {
});
};
スタックの真ん中にミドルウェア関数を実際に挿入する限り(ミドルウェア関数のセットですでに呼び出した後)、app.use
それを行うための文書化された方法はありません。 use
スタックの最後に関数を追加するだけです。
use
実際には、proto.jsのConnectによって提供されます:
app.use = function(route, fn){
...
this.stack.push({ route: route, handle: fn });
return this;
};
技術的app.stack
には、あなたは自分自身をいじることができますが、私はこれをしません。文書化されていない実装の詳細をいじくりまわしていることになりますが、これは変更される可能性があります。つまり、ConnectまたはExpressのいずれかを将来更新すると、アプリが破損する可能性があります。
于 2012-12-03T20:56:39.110 に答える
0
app.use(fn)を使用するか、次のようにスタックできます。
app.get('/foo', fn1, fn2, fn3);
署名は常に同じで、next()を呼び出す必要があります。
function(req, res, next) {
next();
}
于 2012-12-03T21:22:18.780 に答える
-2
何が問題なのかわかりませんか?
ミドルウェアに任意の関数を追加できます。
app.use(function(req,res,next){
//some munipulation with req and res
next()
})
そして、あなたはこれapp
をあなたのモジュラスに送ることができます
于 2012-12-03T20:36:45.580 に答える