微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐