2014-05-14 3 views
0

J'ai travaillé sur un projet, un serveur de sockets, en utilisant NodeJS, avec beaucoup d'aide de personnes sur ce site, mon projet est presque terminé, mais j'ai une erreur générée sur mon code une fois dans un certain temps, et je ne peux pas sembler pointer l'erreur vers le bas, puisque le journal des erreurs ne donne pas le nom d'une variable, fonction ou quoi que ce soit lié au problème, il jette juste ce message:Erreur d'interception dans NodeJs

Exception: TypeError: Cannot read property '0' of undefined 

Mon problème vient aussi du fait qu'il n'y a pas beaucoup de mouvement dans mon code sauf si quelqu'un y est connecté, j'ai un intervalle qui s'exécute toutes les 4 minutes et envoie une requête de mise à jour à ma base de données. restez en vie (nous ne voulons pas changer le service mySQL r wait_timeout puisque nous utilisons le même DB pour les autres projets et produits qui en ont besoin), et une sorte de minuteur global également avec setInterval qui exécute les actions qui lui sont envoyées depuis les salles de jeux créées dynamiquement, mais là encore, l'erreur apparaît jusqu'à même s'il suffit de redémarrer le service, et le laisser intact, il viendra toutes les 10-20 minutes ou alors ... J'ai été jusqu'à présent en utilisant ce code simple pour détecter les erreurs:

process.on('uncaughtException', function(err){ 
    _log('Exception: ' + err+"<br>"); 
}); 

mais cela ne donne pas les informations dont j'ai besoin pour savoir comment déboguer et trouver le problème. Ma question est la suivante: y a-t-il une autre façon de gérer ces erreurs d'une manière qui renverra un peu plus d'information sur la nature du problème?

Merci!

+1

duplication possible de [Node.js n'affiche pas le message d'erreur complet sur uncaughtException, est-ce possible?] (Http://stackoverflow.com/questions/9181027/node-js-doesnt-display-entire-error- message-on-uncaughtexception-is-it-possibl) – pstenstrm

+0

Notez que les promesses sont sans danger et que les bibliothèques de promesses comme Bluebird vous donnent des traces de pile complètes. –

Répondre

3

L'argument err contient plus de propriétés, telles que err.message et err.stack.

+0

Merci, c'était ce que je cherchais, je ne sais pas pourquoi je ne pouvais pas le trouver par moi-même, puisque maintenant je le cherche et trouve la réponse partout ... :) – Yuval

+0

Il est plus facile de trouver quand vous avez la réponse :). Je ne l'ai pas trouvé mentionné dans la documentation, donc c'est facile à manquer. – pstenstrm

0

Essayez le journal err.stack ... Le corps doit comporter au moins 30 caractères; vous avez entré 17.

+0

ce n'est pas une réponse ... vous pouvez mettre cette cind de réponses comme un commentaire – Anri

+0

Je crois que vous avez la bonne réponse, si vous reformulez comme une réponse et mettez un peu plus d'informations dans le corps, cela pourrait être une bonne réponse À la question. – jeremy

+0

@jeremy J'ai réécrit réponse environ 2-3 secondes après le premier commentaire. Ma réponse complète devrait être "err.stack". Je ne pense pas que d'autres informations sont nécessaires. – olamedia