Express:访问路由中的app.set()设置

在Express中,我导致相信可以通过在我的主app.js文件中执行类似于以下内容的操作来创build全局应用程序设置:

 var express = require('express'), ... login = require('./routes/login'); var app = express(); app.configure(function(){ ... app.set('ssoHostname', 'login.hostname.com'); ... }); ... app.get('/login', login.login); ... 

现在在./routes/login.js ,我想访问app.settings.ssoHostname ,但是如果我尝试运行类似于(按照: 如何在express js中使用app.set()来访问variables ) :

 ... exports.login = function(req, res) { var currentURL = 'http://' + req.header('host') + req.url; if (!req.cookies.authCookie || !User.isValidKey(req.cookies.authCookie)) { res.redirect(app.settings.ssoHostname + '/Login?returnURL=' + encodeURIComponent(currentURL)); } }; ... 

它不识别app

 ReferenceError: app is not defined 

我的问题是:

  1. 我采用app.set()进行全局设置,将经常重复使用“正确”的方式来做到这一点,如果是这样的话…
  2. 如何在路由中访问这些设置?
  3. 如果不经常使用app.set()进行全局设置,我将如何设置和获取路由中的自定义设置?

在你的app.js文件的末尾:

 module.exports = app; 

然后在routes/login.js

 var app = require('../app'); 

现在你可以访问实际的app对象,不会得到一个ReferenceError

使用req.app.get('ssoHostname')