我在handlebars中注册自定义帮助器时遇到问题。我试过任何我能找到的东西,但都不管用。
下面是我在app.js中拥有的内容
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中有这样的代码:
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时:
{{formatCurrency settings.Ngames}}我得到了这个错误:
Error: Missing helper: "formatCurrency"我也尝试过在app.js的Handlebars.register中使用,但它不能识别把手。
我做错了什么?如何注册帮助者?
谢谢!
发布于 2018-05-08 03:17:26
您应该注册Handlebar帮助器。
发布我的完整代码:
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);帮助器文件:
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;https://stackoverflow.com/questions/50209282
复制相似问题