2015-05-29 32 views
0

我正在按照Ethan Brown的O'Reilly的「Web Development with Node & Express」中的教程進行操作。帶有Express和Handlebars的NodeJs - handlebars.engine是undefined

它們使用把手作爲視圖引擎。

這裏是我的代碼:

var express = require ('express'), 
    handlebars = require('express3-handlebars'), 
    app = express(); 

handlebars.create({ defaultLayout: 'main' }); 
app.engine('handlebars', handlebars.engine); 

我遇到的問題是,handlebars.engine是不確定的,導致運行應用程序時錯誤「預期回調函數」。

我試過在線搜索沒有任何運氣。

這是一些遺留的句柄與句柄?我的軟件包安裝正常,我試過重新安裝它們。

是否有修復/更新的代碼?

回答

1

您必須從您從create()獲得的物體獲得發動機 - 呼叫!

像這樣: var expHbs = require('express-handlebars'); var handlebars = expHbs.create({ defaultLayout: 'layout', extname: '.hbs', helpers: handlebarsHelpers }); app.engine('.hbs', handlebars.engine); app.set('view engine', '.hbs');

只是說:express3-handlebars得到更名爲express-handlebars。你應該考慮轉換。

+0

非常感謝。真的難住這個。爲了本書的目的,我將使用舊版本,但會對重新命名的版本進行改動。所有的方法和語法都一樣嗎?這只是名稱的改變嗎?如果是這樣,我可能會現在開關 – Asher

+1

大多數東西都是一樣的,但是一些函數,比如'res.status(404).end();'不再被允許('req.sendStatus(404)現在是正確的) 以下是從'express3-handlebars'重命名的更新日誌: https://github.com/ericf/express-handlebars/blob/master/HISTORY.md#100-2014-08 -07 – NeedCoffee