#node.js #localhost
Вопрос:
Я создал узловую программу, которая размещает html-файлы вместе с файлами других типов(если таковые имеются) на локальном хосте:3000. все работает нормально, но по какой-то причине, 404.html не появляется, когда я ввожу неправильное имя пути. Вот программа узла, приведенная ниже:
У меня есть папка с именем 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 Может воссоздать ваш код в песочнице кода. Я не знаю вашей файловой структуры, поэтому могут возникнуть проблемы, вызванные этим.