Узел JS Express Boilerplate и рендеринг - PullRequest
1 голос
/ 22 сентября 2011

Я пробую узел, и это Express Framework через шаблонную установку Express. Мне потребовалось некоторое время, чтобы понять, что мне нужно установить Redis (кстати, если вы создаете шаблон, либо включите в него все необходимое программное обеспечение, либо предупредите о требованиях к определенному программному обеспечению - Redis никогда не упоминался, как требуется), и выясните, как мне это нужно вокруг файла server.js.

Прямо сейчас я все еще незнаком с тем, как я мог бы построить сайт в этом ..

Есть одна проблема, которая меня конкретно беспокоит - когда я запускаю файл server.js, он говорит, что все хорошо. Когда я пытаюсь получить к нему доступ в браузере, он говорит «передача данных с локального хоста» и никогда не заканчивается - все равно, что рендер не заканчивает отправку и никогда не отправляет заголовки. Нет ошибок, нет журналов, нет ничего - res.render ('index') просто зависает. Файл существует, и скрипт находит его, но ничего не происходит. У меня нет обратного вызова в определенном рендере, поэтому заголовки должны отправляться как обычно. Если, с другой стороны, я заменяю команду рендера простой записью («Hello world»); а затем выполните res.end () ;, он работает как шарм.

Что я делаю не так с рендерингом? Я ничего не изменил от первоначальной установки, кстати. Этот файл - index.ejs, он в views /, и я даже назвал app.register ('. Ejs', require ('ejs')); на всякий случай перед самой рендерингом. EJS установлен.

Также стоит отметить - если я делаю res.render ('index'); и затем res.write ('Hello'); сразу после этого, сопровождаемый res.end (); я получаю «Hello» на экране, но рендеринг никогда не происходит - он просто зависает и говорит «Перенос данных с локального хоста». Так что приложение на самом деле не умирает и не зависает, оно просто не завершает рендеринг.

Редактировать: Интересный поворот событий: если я определю обратный вызов в рендере, ответ закончится. Больше нет «Передачи данных ...», но представление никогда не отображается, как и макет. Источник полностью пуст при осмотре. Нет никаких ошибок и исключений.

1 Ответ

0 голосов
/ 22 сентября 2011

Проблема исправлена.Оказывается, наша render () должна быть абсолютной последней командой в цепочке маршрутизации.Помещение res.write ('Hello');и res.end ();после того, как это было именно то, что сломало его.

Я удалил все и написал просто res.render ('index'), и это сработало как шарм.Учитесь на моих ошибках, новички - ничего не выводить после рендеринга!

...