Как обслужить одну страницу 404 для всего сайта в ExpressJS? - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю веб-приложение Express медленно, но верно и хочу добавить определенную страницу c, которая будет возвращаться при получении ответа 404. Вот что у меня есть:

app. js

app.get("*", function (req, res) {
res.send("What are you looking for???", 404);
});

Это после всего моего промежуточного программного обеспечения, импорта маршрутов (у меня они модульные в других файлы), и прямо перед запуском слушателя, чтобы запустить приложение. В нынешнем виде этот текст отображается в любое время, когда на маршруте root (/) есть 404, но не отображается, когда я опускаюсь в каталог сайта. Например, если я нахожусь в подкаталоге типа / Players / PageThatDoesNotExist, страница ошибок не отображается, и приложение перестает работать.

Что я могу сделать, чтобы исправить это и убедиться, что это происходит, когда страница не найдена приложение? Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 17 апреля 2020

Проблема с вашим кодом заключается в том, что вы переопределяете все остальные маршруты с ним и отвечаете на любой входящий запрос со статусом 404. Попробуйте зарегистрировать обработчик маршрута 404, как это, и убедитесь, что он идет после всех ваших других маршрутов.

app.use(function(req, res){
    res.status(404).render('404.hbs');
});

А затем просмотрите всю пользовательскую страницу 404 или, альтернативно,

res.send('<h1>No page found</h1>');

Ответ с некоторое строковое значение

...