将值传递给Node js模块以用于Express路由

时间:2012-03-14 19:02:29

标签: javascript node.js express

我想将Express的环境传递给Express的路由模块。我想关闭Express是否在开发或生产模式下运行。为此,我猜我需要以某种方式将app.settings.env传递给路由模块。

我的路由模块为每条路由导出一个函数。所以:

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

基于之前的stackoverflow帖子,我试过这个:

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

但节点抛出类型错误(对象不是函数)。

我是Node和Express的新手。我可以将值传递给快速路线,如果是,如何传递?

1 个答案:

答案 0 :(得分: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});

您尝试使用object(module.exports)作为函数。在这里键入错误。

您需要将module.exports转换为函数以将参数传递给它。像这样:

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

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