NodeJS + Express + Handlebars - не удалось найти представление «index.html» - PullRequest
16 голосов
/ 11 января 2012

Я немного поиграл с 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 часов, но если кому-то понадобится полный рабочий пример, я могу выложить завтра ...

1 Ответ

17 голосов
/ 11 января 2012

По умолчанию он будет выглядеть в папке с именем views из каталога, в котором находится скрипт.Если вы используете другой каталог, вы должны указать его.

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

Экспресс также должен сообщить вам больше информации о том, где он пытается найти вид, что должно помочь вам точно знать, где он смотрит.

...