Приложение Node.js Express не отображает HTML файл; показывает только пустую страницу.

Вопрос или проблема

Тело: Я разрабатываю простое приложение на Node.js с использованием Express. Моя цель — отобразить HTML-файл, расположенный в папке views, но при доступе к странице показывает пустой экран без какого-либо контента.

Код:

const express = require('express');
const path = require('path');

const app = express();
const port = 3000;

app.get("https://stackoverflow.com/", (req, res) => {
    res.sendFile(path.join(__dirname, 'views', 'index.html'));
});

app.listen(port, () => {
    console.log(`Сервер запущен по адресу http://localhost:${port}`);
});

HTML-файл (views/index.html):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Тестовая страница</title>
</head>
<body>
    <h1>Привет, мир!</h1>
    <p>Это тестовая страница.</p>
</body>
</html>

Сообщения об ошибках: Я не вижу никаких сообщений об ошибках в терминале или консоли браузера.

Что я пробовал:

Я убедился, что сервер запущен и что я могу получить доступ к http://localhost:3000/.
Я проверил пути к файлам, чтобы убедиться, что они правильные.
Я пробовал использовать простой HTML-файл, чтобы увидеть, отобразится ли что-то.
Я использую Windows 10 (Краковская версия) и интересно, может ли это повлиять на приложение.
Ожидаемое и фактическое поведение:

Ожидаемое: Браузер должен отображать “Привет, мир!” и текст “Это тестовая страница.”
Фактическое: Страница пустая, контент не отображается.
Среда:

ОС: Windows 10 (Краковская версия)
Версия Node.js: 20.17.0
Версия Express: 4.21.1

Ответ или решение

Конечно! Давайте подробно обсудим проблему, когда ваше приложение на Node.js с использованием Express не отображает HTML файл, и вместо этого выдаёт пустую страницу.

Проблема: Пустая страница при запросе HTML файла

Вы описали ситуацию, когда приложение на Node.js должно отобразить HTML файл, однако вместо этого отображается пустая страница без какого-либо содержимого. Ваша реализация, похоже, имеет некоторые ошибки. Давайте обратим внимание на ваш код и устранение проблем.

Анализ вашего кода

Ваш текущий код:

const express = require('express');
const path = require('path');

const app = express();
const port = 3000;

app.get("https://stackoverflow.com/", (req, res) => {
    res.sendFile(path.join(__dirname, 'views', 'index.html'));
});

app.listen(port, () => {
    console.log(`Server is running at http://localhost:${port}`);
});
  1. Неправильный путь маршрута:
    Вы определили маршрут app.get("https://stackoverflow.com/", ...), который не корректен для вашего приложения. Вам следует указать относительный путь, например, '/', чтобы обработчик сработал при переходе на http://localhost:3000/.

  2. Необязательное использование https:
    Убедитесь, что вы используете правильный путь для вашего приложения. Протокол HTTPS не должен использоваться в настройках маршрута для сервера Express.

Исправленный код

Ниже приведён исправленный код:

const express = require('express');
const path = require('path');

const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'views', 'index.html'));
});

app.listen(port, () => {
    console.log(`Сервер запущен на http://localhost:${port}`);
});

Проверка index.html

Убедитесь, что файл index.html находится в правильной директории views и имеет корректное содержимое:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test Page</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>This is a test page.</p>
</body>
</html>

Дополнительные рекомендации

  1. Проверка структуры каталогов:
    Убедитесь, что структура каталогов вашего проекта соответствует следующим требованиям:

    проект/
    ├── сервер.js (или ваш главный файл)
    └── views/
       └── index.html
  2. Проверка точного порта:
    Запустите сервер, убедитесь, что он заявляет, что работает на http://localhost:3000/, а затем убедитесь, что вы обращаетесь именно к этому адресу в браузере.

  3. Проверка конфликта портов:
    Убедитесь, что порт 3000 не занят другим приложением. Вы можете попробовать запустить сервер на другом порту, например, 4000.

  4. Проверка на наличие ошибок:
    Если после установки этих изменений вы все еще видите пустую страницу, откройте инструменты разработчика в вашем браузере (обычно доступно через F12) и проверьте вкладку "Сеть" (Network) на наличие каких-либо ошибок загрузки файлов.

Заключение

После внесения всех указанных правок ваше приложение на Node.js должно правильно работать и отображать содержимое HTML-файла. Если проблема сохраняется, возможно, стоит рассмотреть другие аспекты окружения, такие как настройки системы или конфликты программного обеспечения. Убедитесь, что используемая версия Node.js и Express актуальна, так как это тоже может владельчить на производительность и совместимость.

Оцените материал
Добавить комментарий

Капча загружается...