2013-07-17 61 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})); 
... 
});