2013-07-17 18 views
1

我是相对新的节点&快,但车把模板我以前从来没有,并试图引用他们在我的节点app.js使用,但我一直收到以下错误的Node.js + Handlebars + Express如何引用车把模板?

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

这是我的代码:

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')); 
    }); 

任何帮助将不胜感激。

感谢, 汤姆

+0

这不回答你的问题:你尝试过https://github.com/ericf/express3-handlebars? – CedX

回答

6

任何有兴趣我发现这个职位是非常有用的,帮助解决我的问题。

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); 
    });  

,现在我的网页渲染车把模板。

0

您需要将模板和帮助程序的目录传递给应用程序。在顶部宣布你的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})); 
... 
});