DEV Community

Dony M Varkey
Dony M Varkey

Posted on

Create a simple web server in Node.js using Express

In this article we will be creating a basic web server with a simple route to display "Hello, World".
Before we get started, you should have some knowledge in javascript and npm.

Before getting started you should have node and npm installed in you system.

Topics

  • Introduction to Node.js
  • Creating a Node.js server
  • Testing the server
  • Creating a route
  • Testing the route

Introduction to Node.js

Node.js is a asynchronous event driven javascript runtime that is based on chrome's V8 javascript engine. This helps us to run javascript on the server. It is single threaded hence cannot take use of the multiple cores that are available in the system.

Creating a Node.js server

$ mkdir simple-node-js-server
$ cd simple-node-js-server
$ npm init -y
$ code .
Enter fullscreen mode Exit fullscreen mode

npm init -y initializes a node.js project.
code . will open the Visual Studio Code in the project directory (Assuming that you have VS Code installed.)

After opening VS Code, you should see a package.json file in the project directory.

Project Structure

The package.json file contains different metadata about the project, and helps to handle project dependencies.

This is how a package.json file looks like...

{
  "name": "simple-node-js-server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Enter fullscreen mode Exit fullscreen mode

Now let's get into the important stuff.
Create an entry point to our server in the root of our project directory. We name it index.js.

Note: The entry point file name should be same as that of main in the package.json file

index.js

We need to install express first.
To install express run:

$ npm install express
Enter fullscreen mode Exit fullscreen mode

Express is a simple and minimal web application framework for Node.js.

After installing express, open the package.json file. You will find a dependencies object which will contain the dependencies of the project. In our case Express

{
  "name": "simple-node-js-server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.1"
  }
}

Enter fullscreen mode Exit fullscreen mode

To install any package run npm install package_name

You will also find a node_modules directory which contains all of our dependencies. Now open the index.js file and paste the following contents in it.

const express = require('express'); // importing the express dependency
const app = express(); // initialising the server

const PORT = 3000; // Port number on which our server will listen on

app.listen(PORT, () => {
    console.log(`Server listening on port ${PORT}`);
}) // Telling the app to listen on the PORT 3000
Enter fullscreen mode Exit fullscreen mode

Testing the server

Now let's start the server. To start the server, run

$ node index
Enter fullscreen mode Exit fullscreen mode

You should see the following out put in the terminal.

Console output

Yay! 👏. We have created an express server.
Now if you try to navigate to http://localhost:3000/ you will see the following page.

localhost

This is because you haven't defined any routes. Stop the running server using CTRL+C.

Create a route

Now let's create an route. To create a route you have to add the following to the index.js file.

...

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

...
Enter fullscreen mode Exit fullscreen mode

This is our final index.js file.

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

const PORT = 3000;

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

app.listen(PORT, () => {
    console.log(`Server listening on port ${PORT}`);
})
Enter fullscreen mode Exit fullscreen mode

Testing the route

Run the server again using node index.
Now go to http://localhost:3000. You shall see the following.

route

And there you go 😀. We have a created a web server with a single route. With this it's a wrap for this article. Let me know your thoughts in the comments. Have a nice day 👋👋

Top comments (0)