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(); });A mi modo de ver, esto es lo que está pasando:
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.
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(); }); });