Expressjsでリクエストオブジェクトのプロトタイプを拡張したいのですが、このリクエストがどこに定義されているかわかりませんか? http.ServerRequestだと思いますが、その定義も見つかりません。
以下の場合どうするのが正解で...
http.ServerRequest.prototype.redirect = function(path) { }
Express 自体は、 2.* でhttp.IncomingMessage.prototype
このパターンを使用して、ユーティリティ メソッドを に追加します。
var http = require('http'),
req = http.IncomingMessage.prototype;
req.foo = function(bar) {
// Do cool stuff
};
そして3.* のこのパターン:
var http = require('http');
var req = exports = module.exports = {
__proto__: http.IncomingMessage.prototype
};
ただし、Vadim Baryshev が回答で警告しているように、モンキー パッチには注意が必要です。
Connect フレームワークと彼のミドルウェア libsを見てください。すべてのミドルウェアは、作成後にリクエスト オブジェクトとレスポンス オブジェクトを拡張します。コア オブジェクトのプロトタイプを変更することは、他のモジュールで予期しない動作を引き起こす可能性があるため、最善の方法ではありません。