Je travaille sur un module Nodejs et j'ai le problème suivant: P>
Lorsque une erreur survient dans la chaîne de promesse, je peux gérer l'exception, le loger à mon outil de journalisation centralisé et tout va bien. P>
Cependant, de temps en temps, je vois des erreurs qui éloignent l'application, et il redémarre me laissant sans rien faire. Seulement lorsque je regarde dans les journaux dans la machine que je peux comprendre ce qui se passe. Le dernier était celui-ci: p>
Comment puis-je enregistrer l'erreur qui bloque l'application à un outil de journal centralisé. Je comprends que si l'application est morte, il ne peut rien faire. Mais il doit y avoir une stratégie pour faire cela p> TypeError: Conversion de la structure circulaire à JSON code> p>
3 Réponses :
La meilleure façon de gérer l'exception consiste à créer une fonction d'assistance dans laquelle vous devez configurer avec l'outil de journalisation des erreurs, comme (rouleau dans Heroku), et dans toutes les fonctions / itinéraires, vous devez inclure votre code source dans le bloc de try-catch.
Écrivez votre code dans la section Essayer et utilisez la fonction d'assistance et passez l'exception au fichier d'aide. Cela ressemblera à ce et dans le fichier principal p>
Hmm. Je vois. Cela fait beaucoup de sens, cela prendra-t-il aussi des erreurs qui plantent l'application comme dans mon poste d'origine?
Vous pouvez gérer une telle exception via APP.Utilise (InternalserverError ()); est déjà donné ci-dessus.
Place à l'intérieur Essayez / Catch Block toute expression susceptible de générer une erreur. Gérer l'erreur là-bas ou transmettre avec de nouvelles informations jointes.
Tous mes points finaux sont à l'intérieur d'une structure de chaîne de promesse. Devrait-il avoir un essai / attraper intégré?
Il n'y a aucune raison pour que le nœud ne puisse simplement quitter si toutes vos déclarations sont bien gérées.
Vous pouvez essayer une bibliothèque de journalisation telle que Winston avec le module Express-Winston Express-Winston Ceci fournit des middleware de journalisation des erreurs, par exemple: var express = require('express');
var expressWinston = require('express-winston');
var winston = require('winston');
var app = express();
app.use(expressWinston.logger({
transports: [
new winston.transports.File({ filename: 'express.log' })
],
format: winston.format.combine(
winston.format.json()
)
}));
app.get('/test', function(req, res, next) {
res.send('All good');
});
app.get('/error', function(req, res, next) {
// Let's cause an error.
let r = JSON.stringify(req);
});
app.listen(3000, function(){
console.log(`Express Listening on port ${this.address().port}`);
});
app.use(expressWinston.errorLogger({
transports: [
new winston.transports.File({ filename: 'express-error.log' })
],
format: winston.format.combine(
winston.format.json()
)
}));