Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
¿Por qué esto muestra un error de tipo en NodeJS al usar el módulo de ping?

Estoy tratando de hacer una aplicación básica para hacer ping a una IP. Entonces, mi formulario HTML toma una IP de entrada y la publica en NodeJS. Estoy usando el módulo de ping para obtener los resultados. funciona bien si introduzco una IP de forma estática, pero cuando intento obtener una IP mediante un formulario HTML, simplemente se rompe. Así es como se ve mi código.

 app.post("/",function(req,res){ console.log(req.body); var ip= req.body.ip; console.log(typeof(ip)); var msg; var hosts = [ip]; hosts.forEach(function(host){ ping.sys.probe(host, function(isAlive){ console.log(isAlive); msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead'; console.log(msg); }); }); res.write(msg); res.send(); });

Esto es lo que viene en consola

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

A mi modo de ver, esto es lo que está pasando:

  1. Emites una solicitud de ping. Tenga en cuenta que toma una función de devolución de llamada como parámetro. Esto sugiere que se trata de una operación de E/S asíncrona.
  2. tu ejecutas
 res.write(msg); res.send();

En ese momento, msg aún no está definido y, por lo tanto, supongo que res.write(msg) es, de hecho, la línea 30 del archivo app.js sobre el que se trata el error.

  1. Solo entonces se ejecuta la función de devolución de llamada, pero es demasiado tarde

Recomendaría cambiarlo de la siguiente manera

 app.post("/",function(req,res){ console.log(req.body); const ip= req.body.ip; console.log(typeof(ip)); ping.sys.probe(ip, function(isAlive){ console.log(isAlive); const msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead'; console.log(msg); res.write(msg); res.send(); }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda