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

405
Vistas
cuando se usa el método res.render(), error interno de respuesta del servidor express con código de estado 500

Soy nuevo en Node.js, así que tenga paciencia conmigo. Estoy experimentando dificultades con un servidor Express.

Mi objetivo es hacer una solicitud GET y cargar los datos de un servidor externo y presentarlos en mi sitio web. Cargué con éxito los datos del servidor externo y los analicé en el objeto JS. Cuando hago console.log , puedo ver que el objeto JS se transforma correctamente. Pero cuando lo represento en mi archivo ejs, dice que la matriz que pasé no está definida. Escribí correctamente los nombres de las variables. Cuando lo inspecciono usando herramientas de desarrollador y aparece este mensaje de error en la consola:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Este es el código que tengo:

 const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.set('view engine', 'ejs'); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static(__dirname + "/public")); // const ejs = require("ejs"); const https = require('https'); app.get("/Health",function(req, res) { let healthUrl = "https://newsapi.org/v2/top-headlines/?category=health&apiKey=API_KEY&language=en"; https.get(healthUrl, (resp) => { let data =''; resp.on("data",(chunk)=>{ data += chunk; }); resp.on("end",() => { let newData = JSON.parse(data); let allArticles = newData.articles; }); }).on('error', (e) => { console.error(e); }); res.render("Health",{allArticles:allArticles}); });

cuando console.log(allArticles) en el archivo app.js , puedo ver el javascript que cargué. Pero cuando lo rendericé en el archivo ejs, ocurrió un error y recibí el mensaje de que "allArticles is undefined" . Lo verifiqué en el archivo ejs como se muestra a continuación:

 <%-include('partials/header')-%> <% console.log(allArticles) %> <%-include('partials/footer')-%>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

está intentando acceder a la variable allArticles fuera de su alcance Intente devolver res.render donde ha declarado la variable allArticles La solución estará a continuación:

 app.get("/Health", function (req, res) { let healthUrl = "https://newsapi.org/v2/top-headlines/category=health&apiKey=5ad38a0db6944d22aa81b5420f6a62f4&language=en"; https .get(healthUrl, (resp) => { let data = ""; resp.on("data", (chunk) => { data += chunk; }); resp.on("end", () => { let newData = JSON.parse(data); let allArticles = newData.articles; // returning response where allArticles declared return res.render("Health", { allArticles: allArticles }); }); }) .on("error", (e) => { console.error(e); }); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Las variables en javascript tienen alcance. Lo declaras con let dentro de este bloque:

 resp.on("end",() => { let newData = JSON.parse(data); let allArticles = newData.articles; });

y por lo tanto no se puede utilizar fuera de ese bloque. Para solucionarlo, intente declarar la variable afuera y asignarla adentro. Como esto:

 let allArticles; resp.on("end",() => { let newData = JSON.parse(data); allArticles = newData.articles; });

Sin embargo, probablemente solo desee renderizar la página si no se produjo ningún error, así que intente mover la línea de renderizado dentro de este bloque, así:

 resp.on("end",() => { let newData = JSON.parse(data); let allArticles = newData.articles; res.render("Health",{allArticles:allArticles}); });
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