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

在使用Node.js v6.9.2和Express v4.14.0开发EJS博客项目时,遇到了关于'user'和'title'未定义的错误。通过将条件判断改为<% if (!locals.user) {%>来解决'user'问题,同时在layout中使用locals.title处理'title'问题。另外,发现Express的新版本不再支持dynamicHelpers,需改用locals方法进行动态助手的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值