'Handles Bars hbs is not a function
i have just set up my layouts folder inside view as
app.engine('hbs', hbs({extname: 'hbs', defualtLayout : 'layout' , layoutDir: __dirname + '/views/layouts'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
module use is
var hbs = require('hbs');
which give me th following errors
app.engine('hbs', hbs({extname: 'hbs', defualtLayout : 'layout' , layoutDir: __dirname + '/views/layouts'})); ^ TypeError: hbs is not a function
Solution 1:[1]
This worked for me.
make sure install this package: npm install express-handlebars
var hbs = require('express-handlebars');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.engine('hbs', hbs.engine({
extname: 'hbs',
defaultLayout: 'layout',
layoutsDir: __dirname + '/views/layout/',
partialsDir: __dirname + '/views/partials'
}))
Solution 2:[2]
Its working as i change module to
var hbs = require('express-handlebars');
Solution 3:[3]
Use hbs.engine() like given below
app.engine('hbs', hbs.engine({
extname: 'hbs',
defaultLayout: 'layout',
layoutDir: __dirname + '/views/layouts'
}));
Solution 4:[4]
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.engine('hbs',hbs.engine({extname:'hbs',defaultLayout:'layout',layoutsDir:__dirname+'/views/layout/',partialDir:__dirname+'/views/partials/'}))
change hbs to hbs.engine
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | muzu-85 |
| Solution 2 | Anis |
| Solution 3 | Tyler2P |
| Solution 4 | AlexM |
