Search code examples
javascriptnode.jsexpresshandlebars.js

Handlebars Templating Engine Not Defined


I am working through Web Development with Node & Express: Leveraging the JavaScript Stack, by Ethan Brown. I am working in chapter three, which introduces basic concepts concerning Express. I created the app, meadowlark.js, as the book has said, and I am getting this error concerning the Handlebars Templating Engine:

ReferenceError: handlebars is not defined at Object.<anonymous> (/PROJECT_STORAGE/site/meadowlark.js:7:26) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3

Here is the code for how I setup Handlebars and the rest of meadowlark.js:

var express = require('express');

var app = express();

// setup handlebars view engine
var handlbars = require('express-handlebars').create({ defaultLayout: 'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('views', __dirname + '/views');

app.set('port', process.env.PORT || 3000);

app.get('/', function(req, res) {
	res.render('home');
});

app.get('/about', function(req, res) {
	res.type('about');
});

// custom 404 pg
app.use(function(req, res) {
	res.status(404);
	res.render('404');
});

// custom 500 pg
app.use(function(err, req, res, next) {
	//console.error(err.stack);
	res.status(500);
	res.render('500');
});

app.listen(app.get('port'), function() {
	console.log('Express started on localhost:' + app.get('port') + '; press Ctrl-C to terminate.');
});

How can I fix my code to make Handlebars initialize correctly and make handlebars.js run?


Solution

  • Typo var handlbars = require('express-handlebars').create({ defaultLayout: 'main' });

    should be var handlebars.

    Pro tip: Use a linter in your ide.