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

在Express中,我被认为可以通过在我的主要app.js文件中进行类似以下操作来创建全局应用程序设置:

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,但是如果我尝试运行类似于(根据:How to access variables set using app.set() in express js)的任何内容

...
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));
  }
};
...

它无法识别应用程序:

ReferenceError: app is not defined

我的问题是:

>我采用的方法是使用app.set()来进行全局设置,这些设置将经常被重新用于“正确”的方式,如果是这样的话
>如何在路由中访问这些设置?
>如果不经常使用全局设置的app.set()方法,我如何在路由中设置和获取自定义设置?

解决方法

在app.js文件的最后:

module.exports = app;

然后在routes / login.js中:

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

现在您可以访问实际的应用对象,并且不会得到ReferenceError。

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...