【问题标题】:Passing a value to a Node js module for Express routes将值传递给 Express 路由的 Node js 模块
【发布时间】:2012-03-14 19:02:28
【问题描述】:

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

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

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

根据之前的 stackoverflow 帖子,我已经尝试过:

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

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

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

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    如果你的 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 转换为 function 以将参数传递给它。像这样:

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

    【讨论】:

    • 这个解决方案拯救了我的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多