Start reading - Free forever
Home Blog Get into tech
Setup Node.js Express
Project: A Beginner's Guide
MAR 5, 2024
Author
Nimrod Kramer
@NimrodKramer
Related tags on daily.dev
Table of contents
Setting Up a Node.js Project
Installing Node.js
Getting Your Project Ready
🎯
Adding Express
How to Organize Your Project
Building a Basic Express Server
Learn how to set up a Node.js Express project
Require Express
from scratch. Install Node.js, create a basic Define Routes
Apply Middleware
server, organize your project, and dive into
Start the Server
advanced features for web development. Advanced Express Features
Configuring Settings
Using Template Engines
Handling Errors
Structuring Apps
ting a project with Node.js and Express can be exciting Conclusion
Related Blog Posts
a bit daunting if you're new to backend development.
e's a quick guide to get you going: Read more on daily.dev
nstall Node.js and Express: First things first, ensure you have
Node.js installed. Then, using npm, install Express in your
project.
Set Up Your Project: Use npm init to start your project,
creating a package.json that tracks project details.
Create a Basic Server with Express: Learn to define routes and
respond to requests like 'Hello World'. Why not level up your readin
with daily.dev?
Organize Your Project: Set up a neat folder structure for your
Stay up-to-date with the latest
project to keep your code organized.
developer news every time you ope
Dive into More Advanced Features: Explore setting a new tab.
configurations, using template engines for dynamic pages, Start reading - Free forever
handling errors gracefully, and structuring your app for growth.
he end of this guide, you'll have a basic understanding of
ng up a Node.js Express project, organizing it, and
ementing key features for a solid foundation in web
elopment.
tting Up a Node.js Project
talling Node.js
t, you need to get Node.js on your computer. Head over
he Node.js website and grab the latest version that works
you.
Windows:
t download the .msi file and go through the setup
s.
MacOS:
a good idea to use something called nvm to manage
r Node.js versions. Check out the nvm guide, then type:
install node
Linux:
can use your Linux package manager, or just follow the
steps above.
tting Your Project Ready
n your terminal and go to where you want your project to
Start a new Node.js project by typing:
init
wer the questions to create a package.json file. This
keeps track of your project details and the packages you
ding Express
dd Express, which helps you manage your server, type:
install express
command adds Express to your project and lists it as a
essary package in package.json .
w to Organize Your Project
ood way to set up your project's folders might look like
oject
node_modules
public
/images
/javascripts
routes
views
pp.js
ackage.json
/node_modules - Where your project's packages live
/public - Where your images and JavaScript files go
/routes - Where you define paths your app will use
/views - Where the files that make up your website's pages
are
app.js - The main file that starts your app
package.json - Contains info about your project
setup helps you keep things tidy and makes your
ect easier to handle.
ilding a Basic Express Server
quire Express
t, we need to let our app know we're going to use
ress. We do this at the beginning of our app.js file like
st express = require('express');
line of code grabs the Express module so we can use it.
t up, we create our app:
st app = express();
w, app is our Express application, ready to be set up.
fine Routes
w, let's make a simple route. This is like telling our app
to say 'Hello World' when someone visits the home
e:
.get('/', (req, res) => {
es.send('Hello World');
e, we're setting up a route that listens for visits to the
n page ('/') and responds with a message. For something
erent, here’s how to handle a form submission with
T:
.post('/submit-form', (req, res) => {
es.send('Form submitted');
one listens for form submissions to '/submit-form' and
onds accordingly.
ply Middleware
dleware is like a helper that can do things with the
uest and response. Here's how you can log each request:
.use((req, res, next) => {
onsole.log(`${req.method} request for ${req.url}`);
ext();
code will print out what kind of request was made and
hat URL, before moving on to the next bit of code.
art the Server
step, we pick a port for our app to listen on and turn it
st port = 3000;
.listen(port, () => {
onsole.log(`Server listening on port ${port}`);
w, our app will wait for people to visit it on port 3000.
Try daily.dev Today
onnect with developers around the world. Upgrade your developer
ourney with personalized content, collaboration, and an engaged
ommunity.
Start Reading - Free forever
vanced Express Features
nfiguring Settings
xpress apps, you can change settings with app.set() .
me usual settings include:
view engine - This tells Express which tool to use to make
HTML from templates. Popular ones are pug or ejs .
views - Where your template files are kept.
port - The port number your server listens on.
nstance:
.set('view engine', 'pug');
.set('views', path.join(__dirname, 'views'));
.set('port', process.env.PORT || 3000);
example chooses Pug for making HTML, sets where to
the templates, and picks a port number.
can also control other things like debug mode or JSON
ces. The Express documentation has more info.
ing Template Engines
mplate engines let you put JavaScript variables into HTML
plates. Express works with many, like Pug, EJS, and
dlebars.
e's how you might use Pug:
mplate File
l
ead
title= title
ody
h1= message
te File
.get('/', (req, res) => {
es.render('index', {
title: 'My App',
message: 'Hello world!'
);
res.render() mixes the data with the template to
te HTML for the response.
mplates help keep your app organized by separating the
lay from the logic.
ndling Errors
mportant to deal with errors well. Express has a default
r handler:
.use(function (err, req, res, next) {
onsole.error(err.stack)
es.status(500).send('Something broke!')
code logs errors and sends a 500 error response.
can also make custom error handlers for specific
ations:
.get('/protected', function (req, res, next) {
f (!req.user) {
next(new Error('Unauthorized!'));
else {
next();
function (err, req, res, next) {
f (err.message === 'Unauthorized!') {
return res.status(401).send(err.message);
example checks if a user is logged in before letting
m see /protected , and shows a 401 error if not.
ucturing Apps
our Express app gets bigger, it's good to organize it:
Routers - Split your routes into files like users.js and
posts.js
Models - Put data operations in files like User.js
Controllers - Use files like UsersController.js for route
ogic
Middleware - Keep things like login checks in separate files
Config - Put settings in files like config.js
Errors - Deal with errors in errors.js or by error type
anizing your code this way helps keep it clean and easy
manage as your app grows.
onclusion
ting out with Node.js and Express is a solid step toward
king web apps using JavaScript. Let's go over the main
ts we talked about:
nstalling Node.js and Express - Node.js lets you run JavaScript
outside of a web browser, and Express helps manage servers
and routes more easily.
Making a simple Express app - We learned how to begin a
project, use Express, set up an app, make routes to handle
requests, use middleware, and start the app on a port.
mportant features - Express apps benefit from features like
emplate engines for making web pages, error handling for fixing
mistakes smoothly, and settings for tweaking how the app
works.
Organizing your app - When your app gets bigger, keeping it
organized with routers, models, controllers, and more is key to
handling its complexity.
eep learning, look at the official guides for Express and
e.js. Also, these tutorials might help:
Build a REST API with Node and Express
Build a web app with Node.js and Express from scratch
Express middleware explained
h Node.js and Express as your base, you're ready to
te everything from simple servers to complex full-stack
s. Happy coding!
lated Blog Posts
How to Become a Full Stack Software Developer: A Primer
How to Start Learning Backend Development: Structured
Learning Path
Start Vue 3 Project: Initial Steps
Node JS Programming Language Basics
Why not level up
your reading
with daily.dev?
Start reading - Free forever
Stay up-to-date with the latest
developer news every time you
open a new tab.
Read more
Get into tech Get into tech Get into tech
Grok 3: Everything Zig announces Kubernetes
you need to know version 0.14.0 Network Policies:
about this new LLM Zig 0.14.0 introduces Best Practices
by xAI significant upgrades like Implementing
Explore the Kubernetes network
Nimrod Kramer
groundbreaking Grok 3 March 5, 2025
Nimrod Kramer
February 8, 2025
Nimrod Kramer
February 19, 2025
See more on daily.dev
Product Community Company
daily.dev is a professional network for Chrome extension Docs Careers
developers to learn, collaborate, and
Edge add-on Open source Blog
grow together.
iOS app Feature requests Advertise
Android app Online events Brand book
Web version Swag store About us
Changelog Contact
Status
🇮🇱 🇮🇹 🇵🇭 🇳🇱 🇬🇧 🇭🇷 🇱🇹 🇦🇺 🇵🇱 🇳🇴
Working remotely wherever we're happiest
© 2025
🇦🇱 🇵🇹
Daily Dev Terms Privacy Guidelines
Ltd.