• 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...

42 Warsaw Coding Academy
+2 głosów
507 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 (85,700 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 (607,060 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 308 wizyt
pytanie zadane 5 maja 2018 w JavaScript przez Venglas Obywatel (1,160 p.)
0 głosów
0 odpowiedzi 250 wizyt
pytanie zadane 14 lipca 2018 w PHP przez Carians Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 502 wizyt
pytanie zadane 29 marca 2022 w JavaScript przez KubaLaska Początkujący (350 p.)

93,389 zapytań

142,386 odpowiedzi

322,548 komentarzy

62,749 pasjonatów

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...