在NodeJS - Express 4.0下使用app.dynamicHelpers发生错误:

app.dynamicHelpers({
^
TypeError: Object function (req, res, next) {
app.handle(req, res, next);
} has no method 'dynamicHelpers'

查阅资料发现新版本的Express已经不支持dynamicHelpers方法了。可以用locals来替代。

原来代码如下:

app.dynamicHelpers({
user: function(req, res) {
return req.session.user;
},
error: function(req, res) {
var err = req.flash('error'); if (err.length)
return err;
else
return null;
},
success: function(req, res) {
var succ = req.flash('success');
if (succ.length)
return succ;
else
return null;
}
});

用locals方式替换为:

app.use(function(req,res,next){
res.locals.user=req.session.user;
var err = req.flash('error');
var success = req.flash('success');
res.locals.error = err.length ? err : null;
res.locals.success = success.length ? success : null; next();
});

以上代码一定要放在指定路由的语句之前,不然页面中访问user、error、success变量会出错,提示:user is not defined。

注意:

req.flash 是 Express 提供的一个奇妙的工具,通过它保存的变量只会在用户当前
和下一次的请求中被访问,之后会被清除,通过它我们可以很方便地实现页面的通知
和错误信息显示功能。

所以如上代码如果修改成下面的写法,就无法在页面中正确显示出error和success的值。

app.use(function(req,res,next){
res.locals.user=req.session.user; res.locals.error = req.flash('error').length ? req.flash('error') : null;
res.locals.success = req.flash('success').length ? req.flash('success') : null; next();
});

即是req.flash的值会在第一次访问之后会被清除。

最新文章

  1. 说说Makefile那些事儿
  2. 未能加载文件或程序集“Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5”或它的某一个依赖项。系统找不到指定的文件。
  3. vb6保存项目到c盘的安装目录
  4. 【BZOJ 4269】再见Xor
  5. div 加滚动条
  6. jQuery跨域
  7. jquery 插件原则
  8. GP的使用心得
  9. 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
  10. UOJ 217 奇怪的线段树
  11. Linux samba服务器设置简单匿名共享
  12. python的编码问题研究------使用scrapy体验
  13. LCT总结(LCT,Splay)
  14. jQueryh插件imgareaselect
  15. Spring MVC工作原理 及注解说明
  16. 微信video最上层解决问题
  17. nodejs创建文件
  18. 洛谷P3952 时间复杂度
  19. php框架:Flight 简介
  20. ConcurrentHashMap源码解析(1)

热门文章

  1. NodeJS学习之文件操作
  2. 关于sql中constraint 前缀的用意(PK、UK、DF、CK、FK)
  3. 洛谷 P3368 【模板】树状数组 2
  4. 模板:abs用法
  5. newsstand杂志阅读应用源码ipad版
  6. ADO.NET笔记——存储二进制大对象(BLOB)
  7. SUID或SGID程序中能不能用system函数
  8. silverlight 生成二维码
  9. Gulpfile.js——编译、压缩、合并js和css文件
  10. RUP(Rational Unified Process)统一软件过程概述