我想将Express的环境传递给Express的路由模块。我想关闭Express是否在开发或生产模式下运行。为此,我猜我需要以某种方式将app.settings.env传递给路由模块。
我的路由模块为每条路由导出一个函数。所以:
app.get('/search', web.search);
基于之前的stackoverflow帖子,我试过这个:
var web = require('./web')({'mode': app.settings.env});
但节点抛出类型错误(对象不是函数)。
我是Node和Express的新手。我可以将值传递给快速路线,如果是,如何传递?
答案 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) {
// ...
};
};
};