3

次のコマンドでアプリを実行しようとしています。

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.enable('jsonp callback');
  app.set('view engine', 'jade');
  app.set('view options', {layout : false});
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.session({
    secret : 'abcdefg'      
  }));
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));

});

app.dynamicHelpers({
  session : function(req, res){
    return req.session;
  }
});

実行時に次のエラーメッセージが表示されますnode app.js

app.dynamicHelpers({

TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'dynamicHelpers'
    at Object.<annonymous> (C:\nodeapps\nodeblox\app.js:35:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.Load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallBack (node.js:244:9)

nodejsを使用するのは初めてですが、dynamicHelpers()がExpressでサポートされなくなったことを理解しています。コードを作り直してみましたが、エラーが発生し続けています。このdynamicHelpersコードを修正して、残りのコードが引き続き正しく機能するようにする正しい方法は何ですか?

ありがとう!

4

2 に答える 2

5

Express 2 ではなく Express 3 を使用していると思います。何が起こったのかを理解するのに役立つ移行ガイドがあります。dynamicHelpers() の場合、 app.use 関数は以前の場所ではなく、構成部分にある必要があることを理解する必要があります。

app.configure();
app.dynamicHelpers({
  user: function(req, res) {
    return req.session.user;
  }
});

現在E3で

app.configure(function(){
  //...
  app.use(function(req, res, next){
    res.locals.user = req.session.user;
    next();
  });
  //...
});
于 2012-11-22T17:17:04.087 に答える