Ответ 1
В конце вашего файла app.js
:
module.exports = app;
И затем в routes/login.js
:
var app = require('../app');
Теперь у вас есть доступ к фактическому объекту app
и не получит ReferenceError
.
В 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
, но если я попытаюсь запустить что-либо похожее на (как: Как получить доступ к переменным, установленным с помощью приложения. set() в выражении 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));
}
};
...
он не распознает app
:
ReferenceError: app is not defined
Мои вопросы:
app.set()
для глобальных настроек, которые будут часто использоваться повторно для "правильного" способа его выполнения, и если это так...app.set()
для глобальных настроек, которые будут использоваться часто, как бы установить и получить пользовательские настройки в маршрутах?В конце вашего файла app.js
:
module.exports = app;
И затем в routes/login.js
:
var app = require('../app');
Теперь у вас есть доступ к фактическому объекту app
и не получит ReferenceError
.
Используйте req.app.get('ssoHostname')