2012-03-14 17 views
5

Expressの環境をExpressのルーティングモジュールに渡したいとします。私は、Expressが開発モードでも実動モードでも動作しているかどうかを確認したい。そうするために、私はapp.settings.envを何とかルーティングモジュールに渡す必要があると推測しています。エクスプレスルートのノードjsモジュールへの値の受け渡し

私のルーティングモジュールは、各ルートの機能をエクスポートします。だから、:

var web = require('./web')({'mode': app.settings.env}); 

をしかし、ノードは、(オブジェクトが関数ではありません)型エラーがスローされます。以前のStackOverflowのポストに基づいて

app.get('/search', web.search); 

は、私はこれを試してみました。

私はNodeとExpressを初めて使用しています。私は急行ルートに価値を渡すことができます、もしそうなら、どのように?

答えて

8

あなたweb.jsはこのようになります場合:

module.exports.search = function(req, res, next) { 
    // ... 
}; 

module.exports.somethingOther = function(req, res, next) { 
    // ... 
}; 

が、その後

var web = require('./web')({'mode': app.settings.env}); 

を呼び出すことによって、あなたは関数としてオブジェクト(module.exportsは)を使用してみてください。ここにエラーを入力してください。

module.exportsを関数に変換してパラメータを渡す必要があります。このように:

module.exports = function (env) { 
    return { 
     // env available here 
     search: function(req, res, next) { 
      // ... 
     }, 

     somethingOther: function(req, res, next) { 
      // ... 
     }; 
    }; 
}; 
+0

ありがとう。これは機能します。 –

+0

このソリューションは私の日を救った –

関連する問題