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

Express 4.0 Failed to Look up view in "/views" directory

我正在为 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 在视图目录中

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

这是我得到的错误:

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

我花了一个多小时试图修复它,但无济于事。代码有什么问题?

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

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

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

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

设置视图路径有问题。 尝试更改行

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

来自

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

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