Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

406
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!