How To Serve Static Files in Express

In this article, we’ll look at how to serve static files in Express.

express.static

To serve static files such as HTML, CSS, JavaScript, and images, we can use Express’s built-in express.static middleware function.

express.static(root, [options])
  • root argument is the directory serving static assets.
  • options For example, use the following code to serve images, CSS files, and JavaScript files in a directory named public:

app.use(express.static(‘public’))

Steps to serve static files

In this example, we’ll serve

1. Set up express project

Following this installation structure, we can create our Node project as bellow:

mkdir my-project
cd my-project
npm init -y

We then create index.js to store our Express server:

touch index.js

Install Express as a dependency:

npm install express --save

2. Structure our files

This example has an index.html file, style.css, and an image.

To store these files on the client side, we create a public directory and include them. Our public folder looks like this:

my-project
|- index.js
|- public
  |- hello.png
  |- index.html
  |- style.css

3. Create an Express server

In this step, we require Express and write a simple Hello world.

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}`));

4. Serve static file

We’ll want to point to the folder serving our static files.

app.use(express.static(path.join(__dirname, "public")));

Putting it together

const express = require("express");
const app = express();
const PORT = 3000;

app.use(express.static(path.join(__dirname, "public")));

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

Now we can add any file we want in the public directory, such as about.html, and we go to “/about.html” and will see the server running.