Reputation: 6736
In Express, I'm led to believe that global app settings can be created by doing something similar to the following in my main app.js
file:
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);
...
now in ./routes/login.js
, I'd like to access app.settings.ssoHostname
, but if I attempt to run anything similar to (as per: 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));
}
};
...
it does not recognize app
:
ReferenceError: app is not defined
My questions are:
app.set()
for global settings that will be re-used often the "proper" way to do it and if so...app.set()
for global settings to be used often, how would I set and get custom settings in routes?Upvotes: 31
Views: 29367
Reputation: 861
At the end of your app.js
file:
module.exports = app;
And then in routes/login.js
:
var app = require('../app');
Now you have access to the actual app
object and won't get a ReferenceError
.
Upvotes: 2