Chcę zasymulować błąd 404 na moim serwerze Express / Node. Jak mogę to zrobić?
javascript
node.js
express
Randomblue
źródło
źródło
Odpowiedzi:
Obecnie istnieje specjalna
status
funkcja dla tego obiektu odpowiedzi. Po prostu połącz go gdzieś, zanim zadzwoniszsend
.źródło
res.status(404).render('error404')
res.status(404);
nie wyśle odpowiedzi AFAIK. To musi być albo przykuty z czymś, npres.status(404).end();
lub drugiego przykładu, czy to musi nastąpić na przykładres.end();
,res.send('Not found');
res.sendStatus(404)
Zaktualizowana odpowiedź dla Express 4.x
Zamiast używać
res.send(404)
jak w starych wersjach Express, nowa metoda to:Express wyśle bardzo prostą odpowiedź 404 z tekstem „Nie znaleziono”:
źródło
res.status(404)
nie jestres.sendStatus(404)
.res.sendStatus(404)
jest poprawne. Jest to równoważne zres.status(404).send()
res.sendStatus(404);
to odpowiednikres.status(404).send('Not Found')
Nie musisz tego symulować.
res.send
Moim zdaniem drugim argumentem jest kod statusu. Po prostu przekaż 404 do tego argumentu.Pozwól mi wyjaśnić, że: zgodnie z dokumentacją na stronie expressjs.org wydaje się, że jakakolwiek przekazana liczba
res.send()
zostanie zinterpretowana jako kod statusu. Więc technicznie możesz uciec od:Edycja: Mój zły, miałem na myśli
res
zamiastreq
. Powinien zostać wywołany w odpowiedziEdycja: od wersji Express 4
send(status)
metoda jest przestarzała. Jeśli używasz Express 4 lub nowszego, użyj:res.sendStatus(404)
zamiast. (Dzięki @badcc za wskazówkę w komentarzach)źródło
res.send(404, "Could not find ID "+id)
.status(404).send('Not found')
Zgodnie z witryną, którą opublikuję poniżej, wszystko zależy od konfiguracji serwera. Pokazują jeden przykład:
i ich funkcja trasy:
To jest jeden sposób. http://www.nodebeginner.org/
Z innej witryny tworzą stronę, a następnie ją ładują. To może być więcej tego, czego szukasz.
http://blog.poweredbyalt.net/?p=81
źródło
W witrynie Express zdefiniuj wyjątek NotFound i wyrzuć go, gdy chcesz mieć stronę 404 LUB przekierowanie do / 404 w poniższym przypadku:
źródło
app.use(function(err, res, res, next) { if (err.message.indexOf('NotFound') !== -1) { res.status(400).send('Not found dude'); }; /* else .. etc */ });
IMO najpiękniejszym sposobem jest użycie
next()
funkcji:Następnie błąd jest obsługiwany przez program obsługi błędów i można go ładnie stylizować za pomocą HTML.
źródło