Search code examples
node.jsgoogle-chromeexpresslocalhost

localhost didn't send any data - ERR_EMPTY_RESPONSE


Using VScode to write NodeJS

But to check, localhost isn't responding properly, it says "the page didn't send any data. I tried looking everywhere and changed all the possible settings I can.

restored chrome settings cleared cache, cleared history, changed port numbers, changed LAN settings.

 ''''

const Joi = require('joi');
const express = require('express');
const app = express();

app.use(express.json); //to take inputs ffrom the browser
const courses = [
{id: 1, name: "course 1"},
{id: 2, name: "course 2"},
{id: 3, name: "course 3"},
 ];

app.get('/', (req, res) =>{
res.send("Hello world!!");
res.end();
});

app.get('/api/courses/', (req, res) =>{
res.send(courses);
res.end();
});

const port = process.env.port || 8080;
app.listen(port, ()=> console.log(`Listining on port ${port}..`));

 ''''

Want to see all the courses printed on the webpage.


Solution

  • Your courses is an object. You need to send it as string over wire. Send it as json and the browser will be able to parse it.

    app.get('/api/courses/', (req, res) => {
      // change here, your object is stringified to json by express
      res.json(courses);
    });
    

    To take input from browser, you'd have to use packages like body-parser and not app.use(express.json)

    var express = require('express')
    var bodyParser = require('body-parser')
    
    var app = express()
    
    // parse application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({ extended: false }))
    
    // parse application/json
    app.use(bodyParser.json())