2012-03-14 69 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