2012-03-14 96 views
5

我想將Express環境傳遞給Express路由模塊。我想關注Express是否正在開發或生產模式下運行。爲此,我猜我需要將app.settings.env以某種方式傳遞給路由模塊。將值傳遞給節點js模塊以獲得Express路由

我的路由模塊爲每個路由導出一個函數。所以:

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

基於以前的計算器後,我已經試過這樣:

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

但節點拋出一個類型的錯誤(對象不是一個函數)。

我是新來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

謝謝。這工作。 – 2012-03-15 11:39:07

+0

這個解決方案節省了我的一天 – 2015-09-09 06:12:51