各位大虾,请教一个问题:nodejs开发指南注册那里,使用了dynamicHelpers函数,但是因为我现在用的是express3.x,木有这个函数了,请问如何解决啊??? 在网上找了一下,是使用app.use(function(req, res, next){res.locals.user = req.session.user}),可还是出错,总是说user没有定义,无法把会话传到layout.ejs那里。。。。 多谢!
我也遇到了这个问题,我的解决方案是在res.render里面定义user,不然传不过去。 暂时没找到更好的解决方法
请确认 app.use 是在 router 配置 [ 即 app.get(’/’… ] 之前。
。。。locals不就是为了解决这个问题的么。
解决方案:
将书中app.js的dynamicHelpers代码部分改为:
app.use(function(req, res, next){ var error = req.flash(‘error’); var success = req.flash(‘success’); res.locals.user = req.session.user; res.locals.error = error.length ? error : null; res.locals.success = success ? success : null; next(); });
并把此代码放在 app.use(app.router); 之前。
模板文件中改为下面类似结构: <% if (!locals.user) { %> <% if ( locals.error ) { %> <% if ( locals.success ) { %>
实际上用 res.render("/user",{user: req.session.user}) 不是更优雅吗?
你的这个问题我也遇到过,我特地记录了下来http://www.9958.pw/post/dynamicHelpers_helpers 你也可以看看这篇文章对你也许有帮助 http://www.9958.pw/post/nodejs_lesson (主要是我当时做的demo可以参考参考)
@youxiachai
那每个页面都要写上这一段,会重复额