Javascript Nodejs Express-dynamicHelpers错误

Javascript Nodejs Express-dynamicHelpers错误,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在尝试使用以下内容运行我的应用程序: 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

我正在尝试使用以下内容运行我的应用程序:

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)
app.dynamicchelpers({
TypeError:对象函数app(req,res){app.handle(req,res);}没有方法“dynamicHelpers”
在对象上。(C:\nodeapps\nodeblox\app.js:35:5)
在模块处编译(Module.js:449:26)
在Object.Module._extensions..js(Module.js:467:10)
at Module.Load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
位于Module.runMain(Module.js:492:10)
在process.startup.processNextTick.process.\u tickCallBack(node.js:244:9)
我对使用nodejs有点陌生,但我知道Express不再支持dynamicHelpers(),我尝试重新处理代码,但仍然会出现错误。如何正确修复此dynamicHelpers代码,以确保其余代码仍能正常工作


谢谢!

我猜您使用的不是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();
  });
  //...
});

更多差异参考。

感谢您的回复。您建议我在这里做什么?我在这里写了
-if(session.user)
如果他们登录,我想显示他们是一个登录标签,我现在无法像使用DynamicPers那样检查。您建议如何替换这样的东西?据我所知,您现在需要使用会话本身来注册用户是否已登录。通常我会使用cookieParser()来完成此操作如果您喜欢Cookie。是的,很遗憾,我在编写
会话时没有定义
会话。*
无论我在哪里,您可以链接一个例子,或者解释一下您所说的吗?我对使用express/nodejs不太熟悉,我理解所有的代码概念,但我对某些功能不太熟悉抱歉!我知道您在说什么我已就此问题打开了另一个问题。请确保您接受正确的答案,以便其他人可以查看解决方案是否正确。很抱歉,我忘了这么做,我已打开了另一个问题,因为我不希望您回答评论。感谢您的帮助,如果您能帮助我,我将感谢您在其他任务中提供的帮助我接受了答案!
**In Epress3.x** there seems to be having no concept of static or dynamic.
use global or local instead.

/*Global*/
app.locals({ foo: 'bar' });
//or
app.locals.foo = 'bar';

/*For single request*/
res.locals({ foo: 'bar' });
//or
res.locals.foo = 'bar';