Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Peter Mingione
14,166 puntostest ... node example_profile.js ... no está funcionando
La prueba ... node example_profile.js ... no funciona. Recibo este error ...
AggregateError [EBADF]:
at internalConnectMultiple (node:net:1117:18)
at afterConnectMultiple (node:net:1684:7)
Evento 'error' emitido en la instancia ClientRequest en:
at TLSSocket.socketErrorListener (node:_http_client:500:9)
at TLSSocket.emit (node:events:520:28)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'EBADF',
[errors]: [
Error: connect EBADF 52.54.79.234:443
at createConnectionError (node:net:1647:14)
at afterConnectMultiple (node:net:1677:16) {
errno: -9,
code: 'EBADF',
syscall: 'connect',
address: '52.54.79.234',
port: 443
},
Error: connect EBADF 34.198.233.37:443
at createConnectionError (node:net:1647:14)
at afterConnectMultiple (node:net:1677:16) {
errno: -9,
code: 'EBADF',
syscall: 'connect',
address: '34.198.233.37',
port: 443
}
]
}
Peter Mingione
14,166 puntosHola Steven, Gracias por responder. El código está en la lección (https://teamtreehouse.com/library/build-a-simple-dynamic-site-with-nodejs/preparing-planning). Y aquí también está:
Profile.js ...
var EventEmitter = require("events").EventEmitter;
var https = require("https");
var http = require("http");
var util = require("util");
function Profile(username) {
EventEmitter.call(this);
var profileEmitter = this;
//Conectar a la URL de la API (https://teamtreehouse.com/username.json)
var request = https.get("https://teamtreehouse.com/" + username + ".json", function(response) {
var body = "";
if (response.statusCode !== 200) {
request.abort();
//Error de código de estado
profileEmitter.emit("error", new Error("Hubo un error al obtener el perfil para " + username + ". (" + http.STATUS_CODES[response.statusCode] + ")"));
}
//Leer los datos
response.on('data', function (chunk) {
body += chunk;
profileEmitter.emit("data", chunk);
});
response.on('end', function () {
if(response.statusCode === 200) {
try {
//Analizar los datos
var profile = JSON.parse(body);
profileEmitter.emit("end", profile);
} catch (error) {
profileEmitter.emit("error", error);
}
}
}).on("error", function(error){
profileEmitter.emit("error", error);
});
});
}
util.inherits( Profile, EventEmitter );
module.exports = Profile;
Y este es el archivo que se ejecuta (example_profile.js)
var Profile = require("./profile.js");
var studentProfile = new Profile("profiles/petermingione");
studentProfile.on("end", console.dir);
studentProfile.on("error", console.error);
Se ejecuta en la consola...
node example_profile.js
Cuando lo ejecuto en espacios de trabajo funciona bien. Cuando lo ejecuto en mi máquina local, obtengo el error que describí anteriormente. Gracias por la ayuda
Peter Mingione
14,166 puntosGemini dice:
Fallo en el intento de conexión: la matriz [errors] muestra que el proceso no pudo conectarse a dos direcciones IP específicas en el puerto 443 (puerto HTTPS estándar).
Steven Parker
244 163 puntosCuando ejecuto este código en un espacio de trabajo creado a partir del curso, no obtengo ningún error. Veo tus datos de perfil como una cadena JSON.
2 Respuestas
Steven Parker
244 163 puntosEse resultado de Gemini podría indicarnos que el problema es causado por que tu entorno local no tiene una conexión a internet funcionando.
Steven Parker
244 163 puntosPeter Mingione — Supongo que podríamos llamar a un cortafuegos demasiado entusiasta una "conexión a internet que no funciona".
Espero haber ayudado. Puedes marcar una pregunta como resuelta eligiendo una "mejor respuesta".
¡Y feliz codificación!
Peter Mingione
14,166 puntosHola Steven, gracias por la respuesta. He descubierto el problema. Era mi cortafuegos. Ahora que lo he apagado, la aplicación funciona. Gracias de nuevo.
Steven Parker
244 163 puntosSteven Parker
244 163 puntosCompartir tu código es más importante que mostrar los errores. Podemos recrear los errores usándolo, pero también encontrar la causa del problema.
Aquí hay un video sobre cómo hacer una captura de pantalla de tu espacio de trabajo y luego puedes publicar el enlace aquí.