8

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.

4 Answers4

8

I had a similar problem which was caused by calling an https only api endpoint using http.

Thabiso Mofokeng
  • 681
  • 9
  • 20
  • How did you get around it? I'm constantly getting an empty response, and it's not because of malformed data - I've brought a production app to development, I've set all of the development variables & the postgresql settings, the database is connecting, the only issue is "empty responses" – Grant Jan 12 '22 at 13:29
  • What is your design setup? Are you getting the empty response from an http api or standard web app? – Thabiso Mofokeng Jan 12 '22 at 15:53
  • Thank you for your response @Thabiso - in the end it was because my Postgres credentials were incorrect. NestJS was only throwing an exception if the connection to the server was incorrect but not if the credentials didn't log into the table... weird but hey, problem solved due to `.env` variables/credentials & unrelated to https. – Grant Jan 13 '22 at 03:28
1

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())
1565986223
  • 6,420
  • 2
  • 20
  • 33
  • Man, it worked. Thank you so much, was working on it since morning. Another problem, I am using postman, but it's not working, do you have any idea? how to figure it out. –  Mar 28 '19 at 02:30
0
`package.json
"dependencies": {
    "body-parser": "^1.19.0",
    "ejs": "^3.0.1",
    "express": "^4.17.1",
    "mongoclient": "^1.0.3",
    "mongodb": "^2.2.33",
    "mongoose": "^5.8.12"
  }

app.js

const express = require('express');
const bodyParser=require('body-parser');
const app=express();

var db=require('./db')
var user=require('./module/user');

const port=process.env.PORT || 8080;
//to read the name property from html or ejs form or page body parser used there for.(tunnel)
app.use(bodyParser.urlencoded({ extended: true}))
//app.use(bodyParser.json);`

you don't need to add app.use line in "body-parser": "^1.19.0" this version, this is run in my era.

0

I had the same problem and surprisingly running this command in cmd/powershell/windows terminal to turn off WSL worked.

wsl --shutdown
Philipos D.
  • 2,036
  • 1
  • 26
  • 33