在expressjs句柄.hbs视图不加载我的部分

# app.js app.set('view engine', 'hbs'); # ./views/layout.hbs {{> nav}} # ./views/nav.hbs <a href="#">home</a> 

layout.hbs文件没有find我的部分nav.hbs

我在节点app.js控制台上得到以下错误:

抛出新的Handlebars.Exception(“部分”+名称+“不能是fo ^

您需要先注册您要使用的部分“导航”。 我在Express.js hbs模块find了答案- 从.hbs文件中注册偏好对我来说效果很好。 要点是:

 var template = fs.readFileSync(partialsDir + '/' + filename, 'utf8'); hbs.registerPartial(name, template) 

你的问题是你正在使用Express 3.x,这显着改变了它在2.x中如何处理模板的方式。 特别是,2.x对部分模板如何适用于整体布局做了一系列的假设,而3.x则留给了布局引擎本身。 但ejs在express 3.x下仍然会有相同的行为。

注意:把我的评论变成一个答案,因为它是针对你的问题