Node.js + Handlebars + Express如何引用句柄模板?

我相对新的Node&Express,但句柄模板,我从来没有用过,并试图引用他们在我的节点app.js,但我一直得到以下错误

对象#的属性“引擎”不是一个函数

这是我的代码:

app.configure(function () { app.set('views', __dirname+ '/views'); app.set('port', 3000); app.set('view engine', 'handlebars'); app.use(handlebarsLayout); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); }); // ROUTES app.get('/', function (req, res){ var data = { title: "Node + Handlebars", body: "Hello World!" } res.render('index', data); }); http.createServer(app).listen(app.get('port'), function () { console.log("Express server listening on port " + app.get('port')); }); 

任何帮助将不胜感激。

谢谢,汤姆

对于任何有兴趣的人,我发现这篇文章非常有用,帮助解决了我的问题

https://stackoverflow.com/a/14346094/911553

我安装巩固(npm安装巩固),并做了以下几点:

 var engines = require('consolidate') app.configure(function () { app.set('views', __dirname+ '/views'); app.set('port', AppConfig.AppConfig.Express.PORT); app.set('view engine', 'html'); app.set("view options", { layout: true }); app.engine('.html', engines.handlebars); app.use(app.router); }); // ROUTES app.get('/', function (req, res){ var data = { title: "Node + Handlebars", body: "Hello World!" } res.render('index', data); }); 

现在我的页面呈现与句柄模板。

你需要将模板和帮助程序的目录传递给应用程序。 在顶部宣布你的js。

 var helpers = require('./private/js/myhelpers'); 

然后在你的app.configure中:

 // configure express app.configure(function() { //handlebars implementation app.set('views', __dirname + '/views'); app.set('view engine', 'handlebars'); //handlebars helpers are registered in app.engine, helpers is our hbs.js file app.engine('handlebars', exphbs({defaultLayout: 'main', helpers: helpers})); ... });