【问题标题】:NodeJS + Express + Handlebars - failed to locate view "index.html"NodeJS + Express + Handlebars - 找不到视图“index.html”
【发布时间】:2016-02-14 08:02:32
【问题描述】:

我一直在玩 Node.js。我最近开始玩 Express 并且一直在设置一个基本的应用程序。我想使用 Handlebars 作为我的视图模板引擎,但我碰壁了 - 找不到视图“index.html”

我的 index.html 与 app.js 位于同一目录中,因此我认为下面的代码定位 index.html 没有问题...

我找遍了,但似乎除了玉之外的任何东西的综合例子很少见……有人有这个组合的经验吗?

提前致谢!

var express = require('express')
  , app = express.createServer();

app.configure(function(){
    app.set('view engine', 'handlebars');
    app.set("view options", { layout: false }) 
});



app.get('/', function(req, res){

    var data = {
        name: "Ford Prefect",
        home: "a small planet somewhere in the vicinity of Betelgeuse"
    }

    res.render('index.html', data);
});

app.listen(3000);

更新:

我不见了:

app.set('views', __dirname + '/');
app.register('.html', require('handlebars'));

在我的配置中... '.html' 的寄存器似乎非常重要,因为它指定了车把与 .html 的关联...

我希望这对某人有所帮助...

因为我是个菜鸟,我无法在 7 小时内回答我自己的问题,但如果有人需要完整的工作示例,我可以明天发布...

【问题讨论】:

  • 您可以考虑将您的文件命名为 .handlebars 而不是 .html 以表明它不是纯 html 文件。很快.hbs 也可以使用?

标签: templates node.js express handlebars.js


【解决方案1】:

默认情况下,它会在脚本所在目录中查找名为views 的文件夹。如果你使用不同的目录,你必须指定它。

app.set('views', __dirname + '/views');

Express 还应该告诉你更多关于它试图在哪里找到视图的信息,这应该可以帮助你准确地知道它在哪里寻找。

【讨论】:

  • 没错。说实话,这个结论对我来说是分两步得出的——第 1 行,然后是更新中的第 2 行……首先我发现了第 1 行,这导致我遇到错误:找不到模块“html”,就像故事一样去,第 2 行已解决 :) 希望我的愚蠢对某人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
相关资源
最近更新 更多