在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 举报,一经查实,本站将立刻删除。