Learn to Code via Tutorials on Repl.it!

← Back to all posts
Web Server Using Node.js
CodingAndMemes (37)

Hello! This is my first tutorial, so if you find any mistakes or anything you want me to fix please say so in the comments!


How To Make A Web Server Using Node.js


Step 1: Include modules

For this we need the 'express' module
we can do this by using these lines of code:

const express = require('express');//Set up the express module
const app = express();
const router = express.Router();

we will also need the 'path' module:

const path = require('path')

Step 2: Set up the Express router

router.get('/', function(req, res){
  res.sendFile(path.join(__dirname, '/index.html/index.html'));
});
app.use('/', router);

when the user goes to https://www.[yourwebsite].com/
they will receive index.html.

but what if you want to have different pages?
Duplicate what we did before except, instead of just '/' you use '/yourpage'
or in my case, '/lol'

//if they go to '/lol'
router.get('/lol', function(req, res){
  res.sendFile(path.join(__dirname, '/lol.html'));
});
app.use('/lol', router);

(you can see it in action here: https://web-server-template--codingandmemes.repl.co/lol )


Side note: Errors

To send the user to a page when an error occurs, it is very similar to the navigation(see a 404 error in action here: https://web-server-template--codingandmemes.repl.co/thisnoexist )
on a 404 Error:

//404 Error
app.use(function(req, res, next) {
    res.status(404);
    res.sendFile(__dirname + '/404.html');
});

For any other error, you just have to update the res.status. for instance, on a 403 error: res.status(403) and so on, you also along with that have to update the directory: res.sendFile(__dirname + '/403.html');


Set up the Express server to listen on port 3000

let server = app.listen(3000, function(){
  console.log("App server is running on port 3000");
  console.log("to end press Ctrl + C");
});

And thats it! You can check out my template below!
(Note: if you want your server to stay up 24/7-ish use UptimeRobot. It pings your repl every 5 minutes, or the interval you set it too.)
Here is an example of my uptime robot for my server(its free)

Comments
hotnewtop
Raphtalia (71)

tutorial seems fine but isn’t there already a lot of express tutorials on repl talk already?

ch1ck3n (1625)

thanks for telling me about uptimebot+

Yoplayer1py (2)

@ch1ck3n I used uptime robot in my discord bot. It's useful.

Vandesm14 (2644)

You don't need to use express.Router(), you can just use app: app.get and so on

And also, .htaccess doesn't work with Express, so you don't need that either.

CodingAndMemes (37)

I know that .htaccess doesn’t work with Express, see the “Side note: Errors” section @Vandesm14

CodingAndMemes (37)

Its fine, @Vandesm14 , I did say that criticism was welcome at the top

aguy11 (127)

Hi! This tutorial is really nice. But how do you apply external CSS?

CodingAndMemes (37)

@aguy11 just like a regular HTML file or project on repl.it!

aguy11 (127)

@CodingAndMemes I'll try it again but I'm pretty sure it doesn't work. EDIT: It doesn't work.

ch1ck3n (1625)

@CodingAndMemes make a another nodejs line that puts the css on the server, then link the css file to html.

pluto7073 (0)

@ch1ck3n How would I go about doing that? I tried res.sendFile but it didn't work