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

JavaScript

Peter Mingione
Peter Mingione
14,166 puntos

test ... 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
    }
  ]
}
Steven Parker
Steven Parker
244 163 puntos

Compartir 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í.

Peter Mingione
Peter Mingione
14,166 puntos

Hola 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
Peter Mingione
14,166 puntos

Gemini 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
Steven Parker
244 163 puntos

Cuando 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
Steven Parker
244 163 puntos

Ese 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
Steven Parker
244 163 puntos

Peter Mingione — Supongo que podríamos llamar a un cortafuegos demasiado entusiasta una "conexión a internet que no funciona". :guiño:

Espero haber ayudado. Puedes marcar una pregunta como resuelta eligiendo una "mejor respuesta".
¡Y feliz codificación!

Peter Mingione
Peter Mingione
14,166 puntos

Hola Steven, gracias por la respuesta. He descubierto el problema. Era mi cortafuegos. Ahora que lo he apagado, la aplicación funciona. Gracias de nuevo.