2015-05-29 33 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