app.getの動作を拡張しようとしていますが、それを行った後、アプリは拡張前に行った構成の一部を失っているようです。
次のスニペットでは、/sampleおよび/es/sampleの出力は空であり、予想される出力は「値」である必要があります。
私は何か間違ったことをしていますか?
var app = require('express')();
app.set('myprop', 'value');
var _get = app['get'];
app['get'] = function (route, middleware, callback) {
_get.call(app, route, middleware, callback);
// For instance: I generate a new route for 'es' language.
_get.call(app, '/es' + route, middleware, callback);
};
app.get('/sample', function(req, res){
res.send(app.get('myprop'));
});
app.use(app.router);
app.listen(3000);
アップデート
すみません、自分で答えます…
拡張メソッドの次の最初の行を見逃しました:)
if (middleware === undefined && callback === undefined) return _get.call(app, route);
今では魅力のように機能します!
app['get'] = function (route, middleware, callback) {
if (middleware === undefined && callback === undefined) return _get.call(app, route);
_get.call(app, route, middleware, callback);
// For instance: I generate a new route for 'es' language.
_get.call(app, '/es' + route, middleware, callback);
};