用node.js开发 ejs博客项目时遇到的问题

node版本6.9.2 npm 3.10.9 express ~4.14.0
1.”user is not defined”
解决:引用时改成<% if (!locals.user) { %>好用了
success error 同理
2. “title is not defined”
解决:layout 里用locals.title
3.在NodeJS - Express 4.0下使用app.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();
});

你可能感兴趣的:(用node.js开发 ejs博客项目时遇到的问题)