Express 4.0无法在" / views"中查找视图目录

时间:2015-06-09 17:27:25

标签: javascript node.js handlebars.js express-4

我正在为NodeJS使用Express 4.0和Express3-handlebars库。

这是配置

app.set('views', path.join(__dirname, 'views/'));
app.engine('hbs', hbs({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', 'hbs');

contact.html位于views目录

app.get('/', function(req, res) {
 res.render("contact");
});

这是我得到的错误:

Error: Failed to lookup view "contact" in views directory "/Users/max23/Desktop/Node/views/"

我花了一个多小时试图修复它无济于事。什么是代码错误?

3 个答案:

答案 0 :(得分:0)

当您使用 hbs 作为查看系统时,您应该为视图文件使用.hbs扩展名。它无法查找视图,因为它是一个HTML,并且它正在寻找 contact.hbs

我个人对手把库没有太多经验,但我建议您将contact.html扩展名更改为.hbs,然后重试

答案 1 :(得分:0)

您正在使用Handlebars模板库,因此您的视图应该具有.hbs扩展名,而不是.html。将contact.html更改为contact.hbs并将其更改为所有模板。另外,更改此行

app.engine('hbs', hbs({defaultLayout: 'main.hbs', extname: '.hbs'}));

答案 2 :(得分:0)

设置视图路径中存在错误。 尝试更改行

app.set('views', path.join(__dirname, 'views/'));

通过

app.set('views', path.join(__dirname, '/views'));

如果未解决,请显示您的文件夹结构。