NodeJS general guide

This post is a collection of notes related to general overview and guides of Nodejs.

How to start a web server

Once you’ve installed Node, create a file named app.js with the following code:

const http = require('http');

const hostname = '';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);

To run the app execude node app.js. Once it’s done, you can visit http://localhost:3000 and will see a ‘Hello World’.

How to send/handle HTTP requests

The http module allows Node.js to transfer data over HTTP. The module is responsible for:

  • Building web servers
  • Sending client requests
  • Giving responses back to clients
  • Managing connections
  • Holding HTTP constants (methods, status codes)

To include the HTTP module, use the require() method:

var http = require('http');

The following code will send a GET request to NASA’s API and print out the URL for the astronomy picture of the day as well as an explanation:

const https = require('https');

https.get('', (resp) => {
  let data = '';

  // A chunk of data has been recieved.
  resp.on('data', (chunk) => {
    data += chunk;

  // The whole response has been received. Print out the result.
  resp.on('end', () => {

}).on("error", (err) => {
  console.log("Error: " + err.message);

Other ways to make HTTP requests


First install the package npm install request. Then a request can be made like this:

const request = require('request');

request('', { json: true }, (err, res, body) => {
  if (err) { return console.log(err); }


Axios is a Promise based HTTP client for the browser as well as node.js.

To install from npm execute npm install axios.

And to make a request:

const axios = require('axios');

  .then(response => {
  .catch(error => {


Got is another Promise based lightweight solution. Again, install as: npm install got.

And the code is:

const got = require('got');

got('', { json: true }).then(response => {
}).catch(error => {

How to debug a script

Debugging process can be started in nodejs by adding the --inspect flag:

node --inspect index.js

Once it’s done, you will receive the following message:

Debugger listening on ws://
For help, see:

After that you can open Chrome DevTools > Dedicated DevTools for Nodejs (green icon) > any other tabs with similar debugging experience. No words, just amazing.


How to dockerize an existing Nodejs app

First you have to install either Docker Desktop for Windows (Microsoft Windows 10) or Docker toolbox.

Then create a Dockerfile with the following content:

FROM node:10

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

CMD [ "node", "server.js" ]

server.js should be replaced with the file name you “node”.

.dockerignore file is useful to prevent your local modules and debug logs from being copied onto a Docker image:


Run the docker and build an image using the docker images command:

docker build -t <your username>/node-web-app .

Once the image is built, you can see it in the list:

$ docker images

# Example
REPOSITORY                      TAG        ID              CREATED
node                            10         1934b0b038d1    5 days ago
<your username>/node-web-app    latest     d64d3505b0d2    1 minute ago

Last but not least, run the image you previously built:

docker run -p 49160:8080 -d <your username>/node-web-app

The output of your app can be printed with:

# Get container ID
$ docker ps

# Print app output
$ docker logs <container id>

# Example
Running on http://localhost:8080


More info at:

If you want to support me

Follow me on Youtube or GitHub if you want me to continue.