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

rob*_*cks 5 javascript node.js express

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

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

app.get('/search', web.search);
Run Code Online (Sandbox Code Playgroud)

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

var web = require('./web')({'mode': app.settings.env});
Run Code Online (Sandbox Code Playgroud)

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

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

Vad*_*hev 8

如果你web.js看起来像这样:

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

module.exports.somethingOther  = function(req, res, next) {
    // ...
};
Run Code Online (Sandbox Code Playgroud)

然后通过电话

var web = require('./web')({'mode': app.settings.env});
Run Code Online (Sandbox Code Playgroud)

您尝试使用object(module.exports)作为函数.在此输入错误.

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

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

        somethingOther: function(req, res, next) {
            // ...
        };
    };
};
Run Code Online (Sandbox Code Playgroud)