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

400
Views
when res.render() method used, internal express server response error with status code 500

I am new to Node.js so please be patient with me. I am experiencing difficulties with an Express server.

My goal is to make GET request and load the data from external server and render it on my website. I successfully load the data from the external server and parse it into JS object. When I console.log it, I can see the JS object is correctly transformed. But when I render it on my ejs file, it says that the array I passed is undefined. I spelled correctly variables names. When I inspect it by using developer tools and I get this error message in the console:

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

This is the code I have:

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});
});

when I console.log(allArticles) in app.js file, I can see the javascript that I loaded. But when I render it on ejs file, error occurred and got the message that "allArticles is undefined" I checked it in ejs file like below:

<%-include('partials/header')-%>

<% console.log(allArticles) %>

<%-include('partials/footer')-%>

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

you are trying to access allArticles variable outside its scope Try returning res.render where you have declared allArticles variable Solution will be below -

    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

Variables in javascript are scoped. You declare it with let inside this block:

 resp.on("end",() => {

    let newData =  JSON.parse(data);
    let allArticles = newData.articles;
});

and therefore can not used it outside that block. To fix it try declaring the variable outside and assigning inside. Like this:

let allArticles;
resp.on("end",() => {

    let newData =  JSON.parse(data);
    allArticles = newData.articles;
});

However you probably only want to render the page if no error occurred, so try moving the render line inside this block, like this:

 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!