首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法注册handlebar helpers

无法注册handlebar helpers
EN

Stack Overflow用户
提问于 2018-05-07 15:40:43
回答 1查看 985关注 0票数 0

我在handlebars中注册自定义帮助器时遇到问题。我试过任何我能找到的东西,但都不管用。

下面是我在app.js中拥有的内容

代码语言:javascript
复制
const express= require('express');
const exphbs  = require('express-handlebars');
var socket = require('socket.io')
const app=express();
const querystring = require('querystring');

var hbs = exphbs.create({
    extname: '.hbs',
    defaultLayout: 'default',
    layoutsDir: './lib/templates/layouts',
    partialsDir: './lib/templates/partials',
    helpers: require("./helpers/handlebars.js").helpers
});

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

//Handlebars Middleware
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');
app.use(express.static('public'));

我在helpers/handlebars.js中有这样的代码:

代码语言:javascript
复制
var register = function (Handlebars) {
    var helpers = {
        formatCurrency: function (currency) {
            return currency.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
        },
        format_date: function (date, format) {
            return moment(date).format(format);
        }
    };

    if (Handlebars && typeof Handlebars.registerHelper === "function") {
        for (var prop in helpers) {
            Handlebars.registerHelper(prop, helpers[prop]);
        }
    } else {
        return helpers;
    }

};

module.exports.register = register;
module.exports.helpers = register(null);

(这是我在网上找到的一个例子)

但是当我转到我的视图并尝试调用这个helper时:

代码语言:javascript
复制
{{formatCurrency settings.Ngames}}

我得到了这个错误:

代码语言:javascript
复制
Error: Missing helper: "formatCurrency"

我也尝试过在app.js的Handlebars.register中使用,但它不能识别把手。

我做错了什么?如何注册帮助者?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-05-08 03:17:26

您应该注册Handlebar帮助器。

发布我的完整代码:

代码语言:javascript
复制
const express = require('express');
const exphbs = require('express-handlebars');

const app = express();

var hbs = exphbs.create({
  extname: '.hbs',
  defaultLayout: 'default',
  layoutsDir: './lib/templates/layouts',
  partialsDir: './lib/templates/partials'
});

require("./helpers/handlebars").register(hbs.handlebars);

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

//Handlebars Middleware
app.engine('handlebars', exphbs({ defaultLayout: 'main' }));
app.set('view engine', 'handlebars');
app.use(express.static('public'));

const router = express.Router();

router.get("/hello", function (req, res) {
  res.render("index", { layout: false });
});

app.use(router);
app.listen(8080);

帮助器文件:

代码语言:javascript
复制
var register = function (Handlebars) {
    var helpers = {
        formatCurrency: function (currency) {
            return currency.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
        },
        format_date: function (date, format) {
            return moment(date).format(format);
        }
    };

    if (Handlebars && typeof Handlebars.registerHelper === "function") {
        for (var prop in helpers) {
            Handlebars.registerHelper(prop, helpers[prop]);
        }
    } else {
        return helpers;
    }

};

module.exports.register = register;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50209282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档