为什么每次都会出现以下错误:缺少帮助程序,尽管我已经使用app.js中的express-handlebars注册了它?

问题描述

这是我的app.js代码

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 expressValidator = require('express-validator');

var expressHbs =  require('express-handlebars');


var mongoose = require('mongoose');
var passport = require('passport');
var session = require('express-session');



require('./passport');
var config = require('./config');

var indexRoute = require('./routes/index');
var authRoute = require('./routes/auth');

mongoose.connect(config.dbConnstring);
global.User = require('./models/user');
global.Editable = require('./models/Editable');

var app = express();

// view engine setup
**app.set('views',path.join(__dirname,'views'));

//setting up the RegisterHelper
var hbsss = expressHbs.create({
  // Specify helpers which are only registered on this instance.
 defaultLayout: 'status',layoutsDir: path.join(__dirname,'views'),helpers: {
    sum: function (num) {
      return (num+90);
    }
    }
});
//
app.engine('handlebars',hbsss.engine);
app.set('view engine','hbs');**
// app.locals.layout = false;

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator());

app.use(cookieParser());
app.use(session({
    secret: config.sessionKey,resave: false,saveUninitialized: true,maxAge: 30*10000
}));


app.use(passport.initialize());
app.use(passport.session());

app.use(express.static(path.join(__dirname,'public')));

app.use(function(req,res,next) {
  if (req.isAuthenticated()) {
    res.locals.user = req.user;
  }
  next();
});

app.use('/',indexRoute);
app.use('/',authRoute);

// catch 404 and forward to error handler
app.use(function(req,next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err,req,next) {
  // set locals,only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

我试图在Views文件夹中的status.hbs文件中使用此功能

<td>sum = {{sum 10}}</td>

登录状态页面后加载时;我得到了:

Missing helper: "sum"

P.S。我是否需要在以下代码中仅将车把代替hbs?由于我已将.hbs文件夹中所有文件认扩展名设置为View而不是.handlebars。

  app.set('view engine','hbs')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)