Express 3.0では、app.server()と組み合わせて使用するのではなく、ルーティングの目的でのみExpressを使用しようとしています。アイデアはルーティングエンジンを使用することですが、URLスペースをさまざまなサブモジュールに割り当てたい別のフレームワークの一部として使用します。理想的には、既存のルーティングエンジンをサポートして、既存のコードベースを簡単に再利用できるようにする必要があります。
expressは、reqとresに関する仮定とかなり結びついているように見えるので、expressが依存する両方のサブセットを見つけようとしているので、エラーは発生しません。そして、私の好みに合うようにres.render()などを再定義します。
このコードの場合:var app = require('express')(); //ルートを登録します...app.get('/ test'、function(req、res){console.log( "In test1。");});
// From: http://nodejs.org/api/http.html#http_class_http_serverrequest
var req1={ headers: {}, method: 'GET', url: "/test" };
var req2={ headers: {}, method: 'GET', url: "/no_match" };
var res={
setHeader: function(a, b) {console.log(a, b);}
};
console.log("About to test routing now.");
app(req1, res); // ok, should call associated method.
app(req2, res); // Errors!
最初のapp()は正常に戻ります。しかし、2番目のものは一連のエラーを出します。Expressは必然的にreqに依存する必要があり、それは必須です。しかし、応答はアプリケーションのメソッドによってのみ使用されるため、なぜ応答オブジェクトに依存する必要があるのか理解できません。ユーザーがアプリに使用している可能性のあるランダムなコードで確実に機能するように、resオブジェクトのどのサブセットを作成する必要がありますか?