Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

401
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda