• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Node.js error handling - exceptions, unhandledRejection...

Hosting forpsi easy 1 pln
+2 głosów
197 wizyt
pytanie zadane 6 kwietnia 2021 w JavaScript przez _Visni4PL_ Obywatel (1,320 p.)

Dzień dobry, jaki waszym zdaniem jest najbezpieczniejszy i najlepszy sposób na przechwytywanie wszelakich błędów w node.js? Wydaje mi się, że używanie try catch nie jest najlepszym pomysłem, ponieważ zmniejsza to czytelność kodu i łatwo jest w niektórych miejscach najzwyczajniej o tym zapomnieć :). Próbowałem coś wymyślić jednak średnio to działa.

Linijki odpowiedzialne za przechwytywanie błędów w index.js:

const error = require('./middleware/error');
const winston = require('winston');

winston.exceptions.handle(
        new winston.transports.File({ filename: 'uncaughtExceptions.log' })
);

process.on('unhandledRejection', (ex) => {
        throw ex;
});

Plik error to funkcja middleware, która wygląda w taki sposób:

const winston = require('winston');

module.exports = function(err, req, res, next) {
    winston.error(err.message, err);

    return res.status(500).send('Something failed.');
};

Niektóre błędy są logowane w pliku uncaughtExceptions.log i konsoli, lecz przy 

throw new Error('err')

użytkownik dalej dostaje wiadomość błędu z konkretnym plikiem i linijką. Może ktoś bardziej doświadczony mi pomoże, bo wiem, że bez poprawnego przechwytywania błędów nie mogę pójść dalej, a wyczerpał mnie już trochę ten temat.

3
komentarz 6 kwietnia 2021 przez rafal.budzis Szeryf (84,390 p.)
To że użytkownik otrzymuje informacje na temat błędów jest spowodowane raczej sposobem w jaki uruchamiasz aplikacje. Poczytaj jak uruchomić aplikacje w trybie produkcyjnym. Dobrze skonfigurowane zmienne środowiskowe rozwiązują problem.

2 odpowiedzi

+3 głosów
odpowiedź 6 kwietnia 2021 przez Comandeer Guru (596,500 p.)

Może ktoś bardziej doświadczony mi pomoże, bo wiem, że bez poprawnego przechwytywania błędów nie mogę pójść dalej, a wyczerpał mnie już trochę ten temat.

Dlaczego nie możesz iść dalej? 

Strzelam, że apka jest na express.js. W takim wypadku jest dokładnie tak jak @rafal612b mówi: wymuszenie trybu produkcyjnego powinno pomóc.

Niemniej IMO try/catch w newralgicznych miejsach, do lokalnej obsługi błędów (zwłaszcza w głównych miejscach logiku biznesowej) są najlepszym rozwiązaniem. Globalne handlery są już raczej siatką ochronną, jakby coś jednak wyciekło.

0 głosów
odpowiedź 6 kwietnia 2021 przez _Visni4PL_ Obywatel (1,320 p.)
Dziękuję już bardziej rozumiem temat ;)

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
pytanie zadane 5 maja 2018 w JavaScript przez Venglas Obywatel (1,160 p.)
0 głosów
0 odpowiedzi 203 wizyt
pytanie zadane 14 lipca 2018 w PHP przez Carians Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 293 wizyt
pytanie zadane 29 marca 2022 w JavaScript przez KubaLaska Początkujący (350 p.)

92,129 zapytań

140,788 odpowiedzi

317,814 komentarzy

61,451 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1886p. - Łukasz Eckert
  2. 1856p. - Dawid128
  3. 1844p. - Marcin Putra
  4. 1844p. - CC PL
  5. 1775p. - Mikbac
  6. 1633p. - rafalszastok
  7. 1562p. - rucin93
  8. 1553p. - sefirek
  9. 1492p. - Adrian Wieprzkowicz
  10. 1456p. - Eryk Andrzejewski
  11. 1444p. - jaroslawroszyk
  12. 1383p. - Rafał Trójniak
  13. 1325p. - Michal Drewniak
  14. 1275p. - dia-Chann
  15. 1272p. - 13NOONE37
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...