У меня есть базовое приложение node.js, которое я пытаюсь использовать с помощью Express Framework. У меня есть views
папка, где у меня есть index.html
файл. Но я получаю следующую ошибку при загрузке веб-браузера.
Ошибка: не удается найти модуль "HTML"
Ниже мой код.
var express = require('express');
var app = express.createServer();
app.use(express.staticProvider(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8080, '127.0.0.1')
Что мне здесь не хватает?
Многие из этих ответов устарели.
Используя экспресс 3.0.0 и 3.1.0, работает следующее:
Смотрите комментарии ниже для альтернативного синтаксиса и предостережений для Express 3.4+:
Тогда вы можете сделать что-то вроде:
Это предполагает, что у вас есть ваши представления в
views
подпапке, и что вы установилиejs
модуль узла. Если нет, запустите следующее на консоли Node:источник
Из руководства Express.js: Просмотр рендеринга
Так что либо вы создаете свой собственный простой рендерер, либо просто используете Jade:
Подробнее о
app.register
.источник
app.engine('.html', require('ejs').renderFile);
Вы также можете прочитать файл HTML и отправить его:
источник
попробуй это. меня устраивает.
источник
app.register
. Возможно, это не рекомендуется в Express 3.0.0.rc3?TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'register'
источник
Если вы используете express@~3.0.0, измените строку ниже из вашего примера:
что-то вроде этого:
Я сделал это, как описано на странице экспресс-API, и это работает как шарм. При такой настройке вам не нужно писать дополнительный код, поэтому его становится достаточно просто использовать для микропроизводства или тестирования.
Полный код указан ниже:
источник
app.use(express.static(__dirname + '/public'));
после запуска сервера сapp.listen
?Я также столкнулся с той же проблемой в
express 3.X
иnode 0.6.16
. Приведенное выше решение не будет работать для последней версииexpress 3.x
. Они удалилиapp.register
метод и добавилиapp.engine
метод. Если вы попробовали вышеуказанное решение, вы можете получить следующую ошибку.Чтобы избавиться от сообщения об ошибке. Добавьте следующую строку в ваш
app.configure function
Примечание: вы должны установить
ejs
шаблонизаторПример:
Примечание. Самое простое решение - использовать шаблон ejs в качестве движка представления. Там вы можете написать необработанный HTML в * .ejs файлах просмотра.
источник
ejs
глобально?структура папок:
server.js
index.html
вывод:
Привет мир
источник
Если вам не нужно использовать каталог views , просто переместите html-файлы в публичный каталог ниже.
и затем добавьте эту строку в app.configure вместо '/ views'.
источник
Чтобы отобразить HTML-страницу в узле, попробуйте следующее:
Вам нужно установить
ejs
модуль черезnpm
:источник
Для моего проекта я создал эту структуру:
Этот код служит index.html для
/
запросов и reset.css для/css/reset.css
запросов. Достаточно просто, и самое приятное, что он автоматически добавляет заголовки кеша .источник
1) Лучший способ - установить статическую папку. В вашем главном файле (app.js | server.js | ???):
public / css / form.html
public / css / style.css
Затем вы получили статический файл из «публичной» папки:
2)
Вы можете создать свой файловый кеш.
Используйте метод fs.readFileSync
источник
В Express 4.0.0 единственное, что вам нужно сделать, это закомментировать 2 строки в app.js:
А затем поместите ваш статический файл в каталог / public. Пример: /public/index.html
источник
Я добавил ниже 2 строки, и это работает для меня
источник
npm install ejs --save
в вашем рабочем каталоге.Попробуйте функцию res.sendFile () в экспресс-маршрутах.
Читайте здесь: http://codeforgeek.com/2015/01/render-html-file-expressjs/
источник
Я не хотел зависеть от ejs для простой доставки HTML-файла, поэтому я просто написал крошечный рендер:
источник
Я пытался настроить угловое приложение с экспресс-API RESTful и несколько раз попадал на эту страницу, хотя это было бесполезно. Вот что я нашел, что сработало:
Тогда в обратном вызове для ваших маршрутов API выглядят так:
res.jsonp(users);
Ваш клиентский фреймворк может обрабатывать маршрутизацию. Экспресс для обслуживания API.
Мой домашний маршрут выглядит так:
источник
источник
Вот полная демонстрационная версия файла экспресс-сервера!
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
надеюсь, это поможет вам!
источник
Добавьте следующие строки в ваш код
Замените "jade" на "ejs" и "XYZ" (версия) на "*" в файле package.json
Затем в вашем файле app.js добавьте следующий код:
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
И Помните: Сохраняйте все .HTML-файлы в папке просмотра
Ура :)
источник
Для простого HTML вам не требуется пакет npm или промежуточное ПО
просто используйте это:
источник
Очень печально, что около 2020 года экспресс еще не добавил способ рендеринга HTML-страницы без использования
sendFile
методаresponse
объекта. ИспользованиеsendFile
не является проблемой, но передача аргумента в формеpath.join(__dirname, 'relative/path/to/file')
не кажется правильным. Почему пользователь должен присоединиться__dirname
к пути к файлу? Это должно быть сделано по умолчанию. Почему корень сервера не может быть удален из каталога проекта? Кроме того, установка шаблонной зависимости просто для рендеринга статического HTML-файла снова не является правильной. Я не знаю правильный способ решения этой проблемы, но если бы мне пришлось обслуживать статический HTML, я бы сделал что-то вроде:В приведенном выше примере предполагается, что структура проекта имеет
views
каталог и статические файлы HTML находятся внутри него. Например, скажем, вviews
каталоге есть два HTML-файла с именами,index.html
иabout.html
, чтобы получить к ним доступ, мы можем посетить:localhost:8153/index.html
или простоlocalhost:8153/
загрузитьindex.html
страницу иlocalhost:8153/about.html
загрузитьabout.html
. Мы можем использовать аналогичный подход, чтобы обслуживать реактивное / угловое приложение, сохраняя артефакты вviews
каталоге или просто используяdist/<project-name>
каталог по умолчанию и настраивая его на сервере js следующим образом:источник
Я хотел, чтобы запросы к "/" обрабатывались по маршруту Express, где ранее они обрабатывались промежуточным ПО статики. Это позволило бы мне отображать обычную версию index.html или версию, которая загружала объединенные + минимизированные JS и CSS, в зависимости от настроек приложения. Вдохновленный ответом Эндрю Гомера , я решил перетащить мои HTML-файлы - без изменений - в папку представлений, настроить Express так
И создал обработчик маршрута так
Это сработало довольно хорошо.
источник
В server.js, пожалуйста, включите
источник
Если вы пытаетесь обработать HTML-файл, в котором УЖЕ есть все его содержимое, то его не нужно «отображать», его просто нужно «обслуживать». Рендеринг - это когда сервер обновляет или внедряет контент до того, как страница отправляется в браузер, и требует дополнительных зависимостей, таких как ejs, как показывают другие ответы.
Если вы просто хотите направить браузер в файл на основе их запроса, вы должны использовать res.sendFile () следующим образом:
Таким образом, вам не нужны дополнительные зависимости, кроме экспресс. Если вы просто хотите, чтобы сервер отправлял уже созданные html-файлы, приведенный выше способ является очень простым.
источник
Поместите ваш файл index.html в общую папку
Теперь запустите следующий код в вашем терминале
источник
Экспресс 4.х
Отправить .html файлы, без шаблонизатора ...
источник
Я обычно использую это
Просто будьте осторожны, потому что это будет делиться чем угодно в каталоге / web.
Я надеюсь, что это помогает
источник
если вы используете Express Framework для node.js
установить npm ejs
затем добавьте файл конфигурации
;
рендеринг страницы из модуля export.js имеет html-файл в директории views с расширением имени файла ejs как
form.html.ejs
затем создайте form.js
res.render('form.html.ejs');
источник