如何使用Express,Handlebars和Conslidate在Node.js中设置path

我有一个工作的Node.js网站,使用Express.js,Handlebars.js和Consolidate.js。 我想为我的模板的公共部分使用partials,但是不能解决如何使它们适用于不同URL的页面。

我的/views/目录包含这个:

 _footer.html _header.html article.html index.html 

我的Node应用程序的相关部分如下所示:

 var express = require('express'), consolidate = require('consolidate'), handlebars = require('handlebars'), path = require('path'); var app = express(); app.engine('html', consolidate.handlebars); app.set('view engine', 'html'); app.set('views', path.join(__dirname, '/views')); var partials = {header: '_header', footer: '_footer'}; app.get('/', function(req, res) { res.render('index', {partials: partials}); }; app.get(/^\/([\w-]+)\/$/, function(req, res) { res.render('article', {partials: partials}); }; 

在我的index.htmlarticle.html Handlebars模板中,我有这样的东西:

 {{> header}} <!-- page content here --> {{> footer }} 

我应该可以访问/ (当index.html呈现时)和/foo/ (当article.html呈现时)。 但是它只适用于启动节点服务器后首先尝试访问的任何一个。 当我然后导航到另一个path,我得到如下错误:

 Error: ENOENT, no such file or directory '/Users/phil/Projects/projectname/views/<!DOCTYPE html>... 

其余的_header.html部分关注。

我想我需要以某种方式设置我的偏见的path是绝对的,但我不明白如何做到这一点。

为巩固检查: https : //github.com/tj/consolidate.js/issues/18

我build议切换到一些更具体的,如https://github.com/donpark/hbs它会更简单&#x3002;