Node.js + Express Server Setup
Tags: node, express, beginners
Published: 2017-10-02 21:05:52

---
title: Node.js + Express Server Setup
published: true
description: A detailed instruction on how to set up a Node.js server with Express.
tags: Node.js, Express, Beginners
---

Hey hey, I'm glad you're here! We'll be discussing how to set up a Node.js server locally using the Express web application framework. If you don't know much about Node.js, just understand this: Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code server-side. I hope that this tutorial helps you figure what exactly that means. 
You can find the video tutorial [here](https://www.youtube.com/watch?v=HkK5lGx9DRU&t=7s), and the code on [GitHub](https://github.com/henness17/SweetCode/tree/master/001-Node-Server-Setup-with-Express).

---
# First Thing's First
If you have not done this already, you'll need to install Node.js. This can be done at https://nodejs.org/. You should see a couple of download links on the front page, use the LTS version:

![Download box](http://i64.tinypic.com/25au1ky.png)

The setup is simple, just click next, next, next until it's all finished. You got this. :)

---
# Server.js Setup
### Adding Express
Go ahead and open a text editor, I use [Sublime Text](https://www.sublimetext.com/) (it's free!) and create a new file. Let's call this file `server.js` (this will be the only file we work with). Now, the first thing we want to do inside of this `server.js` file is add *Express* to it. Express is a fast, unopinionated, minimalist web framework. We can do that by adding these two lines of code:

```javascript
    var express = require('express');
    var app = express();
```
### Adding a Route
The next thing we want to do is add a *route* to this `server.js` file. Routing refers to the definition of application (server) end points, and how they respond to client (web browser) requests. We can do that by adding this piece of code:

```javascript
    // Our first route
    app.get('/', function (req, res) {
        res.send('Hello Dev!');
    });
```
### Listening to a Port
So now that we have an application framework and a route, the last thing we need to do is tell our server what *port* to listen to. We can do that by adding this code:

```javascript
    // Listen to port 5000
    app.listen(5000, function () {
        console.log('Dev app listening on port 5000!');
    });
```

### Final Product
Okay, cool! We've got our entire server file set up now. Its content looks like this:

```javascript
    var express = require('express');
    var app = express();

    // Our first route
    app.get('/', function (req, res) {
        res.send('Hello Dev!');
    });

    // Listen to port 5000
    app.listen(5000, function () {
        console.log('Dev app listening on port 5000!');
    });
```
---
# Running Server.js
### Navigating to Server.js
We now have a server file, but how do we get it running? We first need to open the *Node.js Command Prompt*, you can find it by using your machine's search functionality. Now we need to navigate to our server file's directory by using these commands: 
```
cd [directory name] // move into a directory
cd .. // move backward a directory
```
You can find more on command-line navigation [here](https://www.digitalcitizen.life/command-prompt-how-use-basic-commands).

### Defining the NPM Package
Can we just run the server file by itself? Well, no. But fortunately we can use *NPM* to set up everything else for us. NPM stands for "Node Package Manager". The first thing we want to do is run the command: 
```
npm init
```
This will prompt for some information and produce a `package.json` file. This package file defines what our application is. Once you've finished setting up the package file, you can move onto installing Express.

### Installing Express
We know that our application wants to use the Express framework, and we added the code for it - but we still need to add it to our packages through NPM. In order to add Express, run the command: 
```
npm install --save express
```
This tells our NPM to install the Express package, and save it to our project's package dependencies. If you open the package file, you will now see Express under the dependencies portion.

### Running Server
And now we're here! We finally get to run the server. Inside of our server's directory, run the command: 
```
node server.js
``` 
This tells Node.js to start the server! You'll see "Dev app listening on port 5000!". Head over to your web browser and go to http://localhost:5000. You should see "Hello Dev!" which is the content of our response from the first route. You can stop the server from running by using `Ctrl+C` in the command prompt.

---
# Adding Another Route
Okay, cool. We have our server running and a response for our index. But what if we want to add another route, how do we do that? We can add another route by simply adding another block of code: 

```javascript
    // Our second route
    app.get('/dev', function (req, res) {
        res.send('Hello, you are now on the Dev route!');
    });
```
Now, start your server again by running the command `node server.js` in the command prompt. Navigate to http://localhost:5000/dev, and you'll see a different response than you get from the index route - it's the response from the `/dev` route. Cool!

---
# Review
You've now successfully set up a minimal server with multiple routes that runs locally. You did this by creating a Node.js application, adding the Express package dependency, and implementing routing. Congratulations! You can learn more about live deployment with [Auto-Deploy a Node.js Server: Heroku + GitHub](https://dev.to/ryhenness/auto-deploy-a-nodejs-server-heroku--github-em). If you'd like to learn more about routes, check out my article [External Routes with Node.js](https://dev.to/ryhenness/external-routes-with-nodejs-1ni).

---
{% youtube HkK5lGx9DRU %}