31

app.jsExpressでは、メインファイルで次のような操作を行うことでグローバルアプリ設定を作成できると思います。

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を実行しようとすると(Express 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));
  }
};
...

それは認識しませんapp

ReferenceError: app is not defined

私の質問は次のとおりです。

  1. 私がapp.set()グローバル設定に使用したアプローチは、頻繁に再利用される「適切な」方法であり、もしそうなら...
  2. ルートでこれらの設定にアクセスするにはどうすればよいですか?
  3. 頻繁に使用されるグローバル設定に使用しない場合app.set()、ルートでカスタム設定を設定および取得するにはどうすればよいですか?
4

2 に答える 2

105

使用するreq.app.get('ssoHostname')

于 2013-08-09T11:30:01.343 に答える
2

app.jsファイルの最後に:

module.exports = app;

そしてroutes/login.js

var app = require('../app');

これで、実際のオブジェクトにアクセスできるようになり、appは取得されませんReferenceError

于 2013-02-11T23:06:20.113 に答える