Expressスタックにミドルウェアを挿入する方法はありますか?つまり、私のapp.jsをメインミドルウェアのチェーンに設定してから、他のモジュールを呼び出してアプリケーションインスタンスを渡して、もっとミドルウェアを挿入したいということです(例えば、正しい場所にパスポートを追加したい認証モジュール)Node.JS Expressアプリケーションにミドルウェアを挿入できます
答えて
にこのapp
を送ることができます。
あなたは、ミドルウェア内の任意の機能を追加することができます。もちろん、ミドルウェアの機能はの順番での順番で実行されるため、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によってアプリが壊れる可能性があります。
問題は何か分かりませんか?
app.use(function(req,res,next){
//some munipulation with req and res
next()
})
を、あなたは確かに他のモジュールにごapp
オブジェクトを渡し、そこuse
を呼び出すことができますしているmoduls
私は問題は、 'app.use'はスタックの最後に*ミドルウェア機能を追加しているため、前に追加されたミドルウェアが関数を実行する前に要求を完了できることです。 – josh3736
たとえば?それはいつ必要ですか? –
物事をよりモジュラーに保つために、authenticate.jsですべての認証を行いたいと思っています。パスポートオブジェクトをそこに作成して渡すのではなく、アプリを渡して、そのモジュールがパスポートを追加したいと思っています。 express.sessionの直後でルータの前にpassport.sessionミドルウェアを初期化してください。 – MrPurpleStreak
あなたはapp.use(FN)を使用するか、このようにそれらを積み重ねることができます。
app.get('/foo', fn1, fn2, fn3);
署名は常に同じになると)(次呼び出す必要があります。
- 1. CSRFミドルウェアが問題を引き起こしていますNode.JS + Express
- 2. 認証ミドルウェアを備えたExpressリソース
- 3. MySQLクライアントをNode.js(Express)アプリケーションでどこで定義しますか?
- 4. `assert_index ':前に挿入するミドルウェアがありません:" Rack :: Sendfile "
- 5. Heroku Node.js/ExpressアプリケーションでHTTPSを無効にする
- 6. Node.js + Express:アプリケーションはポート80でリッスンを開始しません
- 7. Node.js - ミドルウェアのres.redirectに関する問題
- 8. expressでnode.jsのローカライゼーション
- 9. Node.jsセッション固有ミドルウェアのユニットテスト
- 10. Expressはミドルウェアをどのように再調整しますか?
- 11. Node.js - res.renderを拡張するExpressjsミドルウェア
- 12. Node.js、express and cluster
- 13. Node.js/Expressキャッシング
- 14. Node.js - express - session
- 15. Node.js Express vs. Flatiron
- 16. Heroku + Node.js(express) - アプリケーションエラー
- 17. Connect/Expressミドルウェアのテスト方法は?
- 18. Express Webアプリケーション用のNode.jsで一意のIDを生成
- 19. SQLite - BLOBを挿入ステートメントで挿入できますか?
- 20. EJSで画像をnode.js/expressに表示
- 21. Rails 5アップグレード:後で挿入するミドルウェアがありません:ActionDispatch :: ParamsParser(RuntimeError)
- 22. 応答後に実行するExpress/Connectミドルウェアをクライアントに送信
- 23. Express/node.jsルータのワイルドカード
- 24. Node.jsとExpress on Windows
- 25. node.js + express + socket.io with ipv6?
- 26. node.js express app.getとapp.post
- 27. のNode.js/Expressのルーティング
- 28. Node.js Express mongoose query find
- 29. node.jsのexpressでpartialを使用する
- 30. SQL Server Expressデータベースにデータを挿入する方法
ありがとうございました - 私は方法があるとは思わなかった(それが置かれる場所を言う簡単な方法を考えることができない)。私はおそらくあなたが正面を示唆する方法で行くつもりです。 – MrPurpleStreak
注文が重要であることを示す巨大な勝利!ありがとう! – JWally