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
Because what exported by hbs
module is not a function actually.
You should read the description file of the hbs module and it has tell you how to use it.
Using hbs as the default view engine requires just one line of code in your app setup. This will render .hbs files when res.render is called.
app.set('view engine', 'hbs');
To use a different extension (i.e. html) for your template files:
app.set('view engine', 'html'); app.engine('html', require('hbs').__express);
and another way is using express-handlebars
module, it could be used on your way.
app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars');