Визуализировать базовый вид HTML? - PullRequest
266 голосов
/ 25 декабря 2010

У меня есть базовое приложение 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')

Что мне здесь не хватает?

Ответы [ 27 ]

1 голос
/ 06 февраля 2016

Добавьте следующие строки в ваш код

  1. Замените "jade" на "ejs" и "XYZ" (версия) на "*" в файле package.json

      "dependencies": {
       "ejs": "*"
      }
    
  2. Затем в вашем файле app.js добавьте следующий код:

    app.engine('html', require('ejs').renderFile);

    app.set('view engine', 'html');

  3. И помните: сохраняйте все файлы .HTML в представлениях Папка

Приветствия:)

0 голосов
/ 28 апреля 2019

Если вы пытаетесь обработать HTML-файл, в котором УЖЕ есть все его содержимое, то его не нужно «обрабатывать», его просто нужно «обслуживать». Рендеринг - это когда сервер обновляет или внедряет контент до того, как страница отправляется в браузер, и требует дополнительных зависимостей, таких как ejs, как показывают другие ответы.

Если вы просто хотите направить браузер в файл на основе их запроса, вы должны использовать res.sendFile () , например:

const express = require('express');
const app = express();
var port = process.env.PORT || 3000; //Whichever port you want to run on
app.use(express.static('./folder_with_html')); //This ensures local references to cs and js files work

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/folder_with_html/index.html');
});

app.listen(port, () => console.log("lifted app; listening on port " + port));

Таким образом, вам не нужны дополнительные зависимости, кроме экспресс. Если вы просто хотите, чтобы сервер отправлял уже созданные html-файлы, приведенный выше способ является очень простым.

0 голосов
/ 23 мая 2018
app.get('/', function(req, res, next) {
    res.send(`<html><body><h1>My Server</h1></body></html>')
});
0 голосов
/ 25 ноября 2012

Я обычно использую это

app.configure(function() {
    app.use(express.static(__dirname + '/web'));
});

Только будьте осторожны, потому что в каталоге / web будет что-то общее.

Надеюсь, это поможет

0 голосов
/ 28 августа 2013

если вы используете Express Framework для node.js

установите npm ejs

, затем добавьте файл конфигурации

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router)

;

отрендерируйтестраница из модуля export.js содержит html-файл в директории представлений с расширением имени файла ejs как form.html.ejs

, затем создайте form.js

res.render('form.html.ejs');

0 голосов
/ 11 сентября 2014

Я хотел, чтобы запросы к "/" обрабатывались по маршруту Express, где ранее они обрабатывались промежуточным ПО статики.Это позволило бы мне отображать обычную версию index.html или версию, которая загружала объединенные + минимизированные JS и CSS, в зависимости от настроек приложения.Вдохновленный ответом Эндрю Хомейера , я решил перетащить мои HTML-файлы - без изменений - в папку представлений, настроить Express так, как это было

   app.engine('html', swig.renderFile);
   app.set('view engine', 'html');
   app.set('views', __dirname + '/views');  

И создал обработчик маршрута, например,

 app.route('/')
        .get(function(req, res){
            if(config.useConcatendatedFiles){
                return res.render('index-dist');
            }
            res.render('index');       
        });

Это сработало очень хорошо.

0 голосов
/ 27 октября 2015

В server.js, пожалуйста, включите

var express = require("express");
var app     = express();
var path    = require("path");


app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/index.html'));
  //__dirname : It will resolve to your project folder.
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...