Bird
Raised Fist0
Expressframework~10 mins

Serving from multiple directories in Express - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Serving from multiple directories
Start Express App
↓
Set Static Dir 1
↓
Set Static Dir 2
↓
Client Requests File
↓
Check Dir 1 for File
Yes→Serve File
No↓
Check Dir 2 for File
Yes→Serve File
No↓
Send 404 Not Found
Express checks each static directory in order for the requested file and serves it if found; otherwise, it sends a 404 error.
Execution Sample
Express
const express = require('express');
const app = express();
app.use(express.static('public'));
app.use(express.static('assets'));
app.listen(3000);
This code sets up an Express server that serves static files from 'public' first, then 'assets' if not found in 'public'.
Execution Table
StepRequest URLCheck DirectoryFile Found?Action Taken
1/image.pngpublicYesServe /public/image.png
2/style.csspublicNoCheck next directory
3/style.cssassetsYesServe /assets/style.css
4/script.jspublicNoCheck next directory
5/script.jsassetsNoSend 404 Not Found
💡 Request ends when file is found or all directories are checked without success.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
Requested FileNone/image.png/style.css/style.css/script.js/script.js
Current DirectoryNonepublicpublicassetspublicassets
File FoundFalseTrueFalseTrueFalseFalse
Key Moments - 2 Insights
Why does Express check directories in the order they are added?
Express serves the first matching file it finds. The execution_table shows it checks 'public' before 'assets', so files in 'public' take priority.
What happens if the file is not found in any directory?
As shown in step 5 of the execution_table, Express sends a 404 Not Found response when no directories contain the requested file.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what directory is checked for '/style.css' after 'public'?
Aroot
Bpublic
Cassets
Dnode_modules
💡 Hint
Check rows 2 and 3 in the execution_table under 'Check Directory'
At which step does Express send a 404 Not Found response?
AStep 5
BStep 3
CStep 1
DStep 2
💡 Hint
Look at the 'Action Taken' column in the execution_table
If the order of directories is reversed, which directory will Express check first?
Apublic
Bassets
Cnode_modules
Dviews
💡 Hint
The order of app.use(express.static(...)) calls determines the check order
Concept Snapshot
Express serves static files from multiple directories in the order they are added.
Use app.use(express.static('dir')) multiple times.
Requests check each directory in sequence.
First found file is served.
If none found, 404 is sent.
Full Transcript
This example shows how Express serves static files from multiple directories. The server first checks the 'public' directory for the requested file. If the file is found there, it is served immediately. If not, Express checks the next directory, 'assets'. If the file is found in 'assets', it is served. If the file is not found in any directory, Express sends a 404 Not Found response. The order of directories matters because Express stops checking once it finds the file. This behavior allows organizing files in different folders and controlling which files take priority.

Practice

(1/5)
1. What happens when you use multiple app.use(express.static()) calls with different directories in Express?
easy
A. Express throws an error if multiple static directories are used.
B. Express merges all directories into one and serves files randomly from any directory.
C. Express only serves files from the last directory added with express.static().
D. Express serves static files by checking each directory in the order they were added until it finds the file.

Solution

  1. Step 1: Understand how Express static middleware works

    Each app.use(express.static()) adds a middleware that checks its directory for requested files.
  2. Step 2: Order of middleware matters

    Express checks these middlewares in the order they were added and serves the first matching file it finds.
  3. Final Answer:

    Express serves static files by checking each directory in the order they were added until it finds the file. -> Option D
  4. Quick Check:

    Multiple static folders checked in order = D [OK]
Hint: Remember: Express checks static folders in order added [OK]
Common Mistakes:
  • Thinking Express merges directories randomly
  • Believing only the last directory is used
  • Assuming multiple static folders cause errors
2. Which of the following is the correct way to serve static files from two directories named public and assets in Express?
easy
A. app.use(express.static('public')); app.use(express.static('assets'));
B. app.use(express.static(['public', 'assets']));
C. app.use(express.static('public', 'assets'));
D. app.use(express.static('public')); app.use.static('assets');

Solution

  1. Step 1: Check Express static syntax

    The express.static() middleware accepts only one directory path at a time.
  2. Step 2: Use multiple app.use() calls

    To serve multiple directories, call app.use(express.static()) separately for each directory.
  3. Final Answer:

    app.use(express.static('public')); app.use(express.static('assets')); -> Option A
  4. Quick Check:

    Multiple static folders need separate app.use calls = C [OK]
Hint: Use separate app.use calls for each static folder [OK]
Common Mistakes:
  • Passing multiple directories in one express.static call
  • Using incorrect method like app.use.static
  • Passing an array instead of separate calls
3. Given the code below, what file will Express serve when a user requests /image.png? Assume both directories contain a file named image.png.
app.use(express.static('public'));
app.use(express.static('assets'));
medium
A. The image.png from the public directory.
B. The image.png from the assets directory.
C. An error because the file exists in both directories.
D. No file will be served; Express will return 404.

Solution

  1. Step 1: Understand middleware order

    Express checks static directories in the order they are added. Here, public is checked first.
  2. Step 2: First match is served

    Since image.png exists in public, Express serves that file and stops checking further.
  3. Final Answer:

    The image.png from the public directory. -> Option A
  4. Quick Check:

    First matching static file served = A [OK]
Hint: Express serves first found file in order of static folders [OK]
Common Mistakes:
  • Assuming Express merges files from both directories
  • Thinking Express throws error on duplicates
  • Believing the last directory has priority
4. Identify the error in the following Express code that tries to serve static files from two directories:
app.use(express.static('public'));
app.use(express.static));
app.use(express.static('assets'));
medium
A. The first line should use app.get instead of app.use.
B. The second line has a syntax error with missing parentheses and argument.
C. Express cannot serve from more than one directory.
D. The third line should come before the first line.

Solution

  1. Step 1: Check each line for syntax correctness

    The second line is app.use(express.static)); which is missing parentheses and directory argument.
  2. Step 2: Understand correct usage of express.static

    The express.static() function requires a directory path as an argument and proper parentheses.
  3. Final Answer:

    The second line has a syntax error with missing parentheses and argument. -> Option B
  4. Quick Check:

    Syntax error in express.static call = B [OK]
Hint: Check parentheses and arguments in express.static calls [OK]
Common Mistakes:
  • Ignoring missing parentheses or arguments
  • Thinking app.use is wrong for static files
  • Believing order of calls causes syntax error
5. You want to serve static files from public and uploads directories, but only files in uploads should be accessible under the URL path /files. How do you configure Express correctly?
hard
A. app.use(express.static('public/uploads')); app.use(express.static('uploads'));
B. app.use('/files', express.static('public')); app.use(express.static('uploads'));
C. app.use(express.static('public')); app.use('/files', express.static('uploads'));
D. app.use(express.static('public')); app.use(express.static('/files/uploads'));

Solution

  1. Step 1: Serve public directory normally

    Use app.use(express.static('public')) to serve files at root URL.
  2. Step 2: Mount uploads directory under /files path

    Use app.use('/files', express.static('uploads')) so files in uploads are accessible under /files URL prefix.
  3. Final Answer:

    app.use(express.static('public')); app.use('/files', express.static('uploads')); -> Option C
  4. Quick Check:

    Use URL prefix for uploads folder = A [OK]
Hint: Use URL path prefix in app.use for selective static serving [OK]
Common Mistakes:
  • Serving uploads without URL prefix
  • Using wrong directory paths
  • Confusing URL path with filesystem path
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard