在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);
...
Run Code Online (Sandbox Code Playgroud)
现在./routes/login.js
,我想访问app.settings.ssoHostname
,但如果我尝试运行任何类似的东西(根据:如何在快递js中使用app.set()设置变量):
...
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));
}
};
...
Run Code Online (Sandbox Code Playgroud)
它不承认app
:
ReferenceError: app is not defined
Run Code Online (Sandbox Code Playgroud)
我的问题是:
app.set()
用于全局设置的方法是否经常以"正确"的方式重复使用,如果是这样的话......app.set()
经常使用全局设置,我将如何在路线中设置和获取自定义设置?Dar*_*kas 96
使用 req.app.get('ssoHostname')
在app.js
文件的末尾:
module.exports = app;
Run Code Online (Sandbox Code Playgroud)
然后在routes/login.js
:
var app = require('../app');
Run Code Online (Sandbox Code Playgroud)
现在您可以访问实际app
对象,但不会获得ReferenceError
.
归档时间: |
|
查看次数: |
25564 次 |
最近记录: |