nodejs开发指南里面dynamicHelpers函数问题求解。。。
发布于 12 年前 作者 zhoon 5672 次浏览 最后一次编辑是 8 年前

各位大虾,请教一个问题:nodejs开发指南注册那里,使用了dynamicHelpers函数,但是因为我现在用的是express3.x,木有这个函数了,请问如何解决啊??? 在网上找了一下,是使用app.use(function(req, res, next){res.locals.user = req.session.user}),可还是出错,总是说user没有定义,无法把会话传到layout.ejs那里。。。。 多谢!

7 回复

我也遇到了这个问题,我的解决方案是在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
那每个页面都要写上这一段,会重复额

回到顶部