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

Object Storage Arubacloud
+2 głosów
278 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,260 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 (601,550 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 246 wizyt
pytanie zadane 5 maja 2018 w JavaScript przez Venglas Obywatel (1,160 p.)
0 głosów
0 odpowiedzi 224 wizyt
pytanie zadane 14 lipca 2018 w PHP przez Carians Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 327 wizyt
pytanie zadane 29 marca 2022 w JavaScript przez KubaLaska Początkujący (350 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...