Node.js Express gère les erreurs de démarrage
J'ai app Node.js et Express. J'ai besoin d'écrire des tests pour elle. J'ai un problème avec la manipulation Express app erreurs. J'ai trouvé ce Comment puis-je attraper le nœud.js/express erreurs de serveur comme EADDRINUSE?mais il ne fonctionne pas pour moi, je ne sais pas pourquoi. Je veux gérer les erreurs qui peuvent survenue pendant la expressApp.listen() est en cours d'exécution (EADDRINUSE, EACCES etc.).
express = require('express')
listener = express()
#doesn't work for me
listener.on('uncaughtException', (err) ->
#do something
)
#doesn't work too
listener.on("error", (err) ->
#do something
)
#this works, but it caughts all errors in process, I want only in listener
process.on('uncaughtException', (err) ->
#do something
)
listener.listen(80) #for example 80 to get error
Des idées?
source d'informationauteur Piane_Ramso
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, expressJS ne pas jeter le
uncaughtException
cas, le processus est, c'est donc sans surprise que votre code ne fonctionne pas.Donc de l'utiliser:
process.on('uncaughtException',handler)
à la place.Prochaine, expressJS déjà fournit un moyen standard d'erreur de manipulation qui consiste à utiliser le middleware de la fonction qu'il fournit à cet effet, comme dans:
Cette fonction retourne un message d'erreur au client, avec option de suivi de pile, et est documenté à connectJS errorHandler.
(Notez que errorHandler est en fait une partie de connectJS et est seulement exposés par expressJS.)
Si le comportement de l'existant errorHandler offre n'est pas suffisant pour vos besoins, sa source est située à connectJS
errorHandler
middleware et peut être facilement modifié pour s'adapter à vos besoins.Bien sûr, plutôt que de modifier cette fonction directement, la "bonne" façon de le faire est de créer votre propre errorHandler, à l'aide de la connectJS version comme un point de départ, comme dans:
Et l'installer dans expressJS:
Voir Suffit de le Brancher, Déjà pour une explication de connectJS l'idée de
filter
etprovider
middleware et Comment Écrire Middleware pour se Connecter/Express pour un bien écrit tutoriel.Vous pouvez également trouver ces très utiles:
Comment gérer les exceptions de code dans node.js?
Récupérer à partir d'Exception non Interceptée dans Node.JS
Enfin, une excellente source d'information sur les tests expressJS peut être trouvé dans ses propres tests.
Cela devrait faire l'affaire:
Ce
listener.listen
en fait n'est de créer un serveur HTTP et appel écouter sur: