2012-09-19 13 views
12

Soy nuevo en node.js y estoy tratando de experimentar con cosas básicas.Node.js http.createServer cómo obtener el error

Mi código es este

var http = require("http"); 
http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
}).listen(8888); 

Aquí está la pregunta - ¿cómo puedo ver las excepciones lanzadas (o eventos lanzados) al llamar createServer? Intenté probar/capturar, pero parece que no funciona. En la API del módulo, no pude encontrar ninguna referencia al mismo. Pregunto porque accidentalmente inicié un servidor en un puerto tomado (8888) y el error que obtuve (en la línea de comandos) fue Error: EDDRINUSE, esto es bastante útil, pero sería bueno poder entender cómo se detectan los errores. en el nodo

Respuesta

1

Puede utilizar

process.on('uncaughtException', function(e){ 
    console.log(e); 
}); 

Para controlar las excepciones no capturadas. Cualquier excepción no controlada desde el servidor web podría ser atrapada de esta manera.

4

Imprimir stacktrace de excepciones no detectadas utilizando el siguiente código.

process.on('uncaughtException', function(err) { 
      console.error(err.stack); 
}); 
+0

Este es un enfoque malo, usted podría filtrarse recursos como locos ([>> declaración oficial] (https://nodejs.org/api /process.html#process_event_uncaughtexception)) –

19

Puede hacerlo gestionando el evento de error en el servidor que está creando. Primero, obtenga el resultado de .createServer().

var server = http.createServer(function(request, response) { 

A continuación, se puede manejar con facilidad los errores:

server.on('error', function (e) { 
    // Handle your error here 
    console.log(e); 
}); 
+2

Esta es la mejor solución, ya que escucha el alcance correcto del "servidor" y no todo el proceso. –

+0

Solución mucho mejor. –

Cuestiones relacionadas