Проблема с размещением веб-страницы на локальном хостинге с использованием nodejs

#node.js #localhost

Вопрос:

Я создал узловую программу, которая размещает html-файлы вместе с файлами других типов(если таковые имеются) на локальном хосте:3000. все работает нормально, но по какой-то причине, 404.html не появляется, когда я ввожу неправильное имя пути. Вот программа узла, приведенная ниже:

https://pastebin.com/4vtSQsva

У меня есть папка с именем public в корневом каталоге проекта, и именно там находятся все размещенные html css js и другие файлы. пожалуйста, помогите мне.

Комментарии:

1. чем проще код, тем лучше. Попробуйте вместо этого использовать оператор switch developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… это поможет вам устранить неполадки

2. спасибо за это, но мне это, похоже, не помогло. Также я хотел бы остаться в текущей форме кода по некоторым другим причинам(пожалуйста, не принимайте это на свой счет). Было бы неплохо, если бы вы любезно объяснили, почему 404 не загружается, к вашему сведению, я пытался дать консоль. войдите туда, и я обнаружил, что журнал не появляется в терминале, а страница продолжает загружаться

Ответ №1:

Я думаю, вам следует заменить это:

 if (!exists) {
    res.statusCode = 404;
    filePath = path.resolve('./404.html');
    res.setHeader('Content-Type', 'text/html');
    fs.createReadStream(filePath).pipe(res);
    return;
}
 

С этим:

 if (!exists) {
    res.statusCode = 404;
    filePath = path.resolve('./404.html');
    fs.readFile(filePath, function (err, contents) {                        
        if (!err) {                            
             res.writeHead(404, { 'Content-Type': 'text/html' });
             res.end(contents);
        } else {                            
             console.log(err);
        };
    });
 }
 

Сделал ли твой 404.html файл помещен в /общую папку?

Если это так, то так и должно быть filePath = path.resolve('./public/404.html');

Комментарии:

1. спасибо за ответ, но это, похоже, не решило мою проблему. Здесь вы можете найти запись ошибки на экране

2. @AarushPaul Может воссоздать ваш код в песочнице кода. Я не знаю вашей файловой структуры, поэтому могут возникнуть проблемы, вызванные этим.