美文网首页web前端
handlebar helpers is not a model

handlebar helpers is not a model

作者: 风逍梦遥 | 来源:发表于2018-07-15 20:44 被阅读45次

    我在使用helps时在网上看了很多文章,有99%的都说helps在express-handlebars是这样使用的:

    var express = require('express');

    // 引入express-handlebars

    var exphbs        = require("express-handlebars")

    app = express();

    // 设置模板存放路径

    app.set("views", __dirname+ "/views")

    var hbs = exphbs.create({

      partialsDir:'/views/partials',

      helpers: {

          foo: function () { return 'FOO!'; },

          bar: function () { return 'BAR!'; }

        }

    });

    // Register `hbs.engine` with the Express app.

    app.engine('.hbs', exphbs({

      extname: '.hbs'

    }));

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

    app.use(express.static(__dirname + '/public'));

    但是我这样运行项目时一直是报错,说找不到helpers,我明明已经注册了呀。后来我有找到了1%的文章,文章上说我们可以这样注册:

    app.engine('.hbs', exphbs({

      extname: '.hbs',

      helpers: {

          foo: function () { return 'FOO!'; },

          bar: function () { return 'BAR!'; }

        }

    }));

    这样试过之后,果然不报错了,我很感谢这最后一篇文章的指导。如果有小伙伴遇到类似的错误,可以这样试试哦。另外,如果我们安装的是handlebars而不是express-handlebars,我们入口文件app.js应该是这样注册partials和helpers的:

    var express = require('express');

    var app = express();

    var helpers = require('./server/helpers');

    var hbs = require('hbs');

    hbs.registerPartials(__dirname + '/server/views/partials');

    for (var key in helpers) {

        if (helpers.hasOwnProperty(key)) {

            hbs.registerHelper(key, helpers[key]);

        }

    }

    app.enable('trust proxy');

    app.set('views', path.join(__dirname, 'server', 'views'));

    app.set('view engine', 'hbs');hbs.registerPartials(__dirname + '/server/views/partials');

    for (var key in helpers) {

        if (helpers.hasOwnProperty(key)) {

            hbs.registerHelper(key, helpers[key]);

        }

    }

    app.enable('trust proxy');

    app.set('views', path.join(__dirname, 'server', 'views'));

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

    可以用hbs.registerPartials和hbs.registerHelper来注册使用,但是在express-handlebars这种方式并不生效。

    相关文章

      网友评论

        本文标题:handlebar helpers is not a model

        本文链接:https://www.haomeiwen.com/subject/wwfmpftx.html