I am brand new to node and handlebars as of two days ago so bear with me. I am trying to use custom handlebars helpers but am not entirely sure where to put it.
I keep getting "TypeError: Handlebars.registerHelper is not a function"
Right now I have it in my server.js file. Not sure if this is correct.
var express = require('express');
var app = express();
var Handlebars = require('express-handlebars');
app.engine('handlebars', Handlebars({
defaultLayout: 'main'
}));
app.set('view engine', 'handlebars');
Handlebars.registerHelper("if", function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
});
It looks like you need to use it like this, according to the docs found here: https://github.com/ericf/express-handlebars
R.A. Lucas is correct.
The object you get from
require('express-handlebars')
is not any 'plain old handlebars object'. It's a different object only used in express-handlebarsWhat you do is pass your helpers (and other settings as well) to the
.create()
function of that object.Here's a fully functional example where I define 2 helpers in express-handlebars
Just came across the same problem. Thanks to R.A.Lucas and Drkawashima, the answers above are correct, but here's a slightly shorter option.