const http = require('http') const server = http.createServer(()=>{ console.log("created server") }); const port = 3000; server.listen(port, (req,res) => {console.log(res)})// en consola => indefinido
//después de abrir la página => en consola => servidor creado
// no res obj en la consola
¿Por qué no se puede registrar "res" en la consola incluso después de que "servidor creado" esté registrado en la consola y "http://localhost:3000" también esté abierto?
¿Por qué no se puede registrar "res" en la consola incluso después de que se haya registrado en la consola el "servidor creado"?
La devolución de llamada a server.listen() simplemente le indica cuándo se inició su servidor. No se pasa req o res ya que no hay una conexión http entrante activa en el momento en que su servidor acaba de iniciarse.
req y res se pasan a los oyentes para el evento de solicitud en el que puede registrarse pasando una devolución de llamada a http.createServer() como en:
const server = http.createServer((req, res) => { console.log(res); res.end("hello"); }); O bien, registrando un oyente para el evento de request como en:
server.on('request', (req, res) => { console.log(res); res.end("hello"); }); Por lo tanto, aparece en su código que solo tiene las devoluciones de llamada a http.createServer() y server.listen() invertidas . Es el de http.createServer() que se llama con req y res , no la devolución de llamada a server.listen() . Esa devolución de llamada a server.listen() le indica cuándo el servidor se ha iniciado correctamente. La devolución de llamada a http.createServer() le informa cuando ha llegado una solicitud http entrante y pasa req y res a esa devolución de llamada.