Bird
Raised Fist0
Node.jsframework~20 mins

path.join for cross-platform paths in Node.js - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Path Join Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Node.js code using path.join?
Consider the following code snippet using path.join on a Windows system. What will be the output printed?
Node.js
import path from 'path';
console.log(path.join('folder', 'subfolder', 'file.txt'));
A'folder\\subfolder\\file.txt'
B'folder/subfolder/file.txt'
C'folder\\subfolder/file.txt'
D'folder/subfolder\\file.txt'
Attempts:
2 left
💡 Hint
Remember that path.join uses the platform-specific separator.
Predict Output
intermediate
2:00remaining
What does path.join output on POSIX (Linux/macOS)?
Given this code running on a POSIX system, what is the output?
Node.js
import path from 'path';
console.log(path.join('/usr', 'local', 'bin'));
A'/usr/local/bin'
B'/usr\\local\\bin'
C'/usr/local\\bin'
D'usr/local/bin'
Attempts:
2 left
💡 Hint
POSIX systems use forward slashes as path separators.
component_behavior
advanced
2:00remaining
How does path.join handle absolute paths in arguments?
What will be the output of this code snippet?
Node.js
import path from 'path';
console.log(path.join('folder', '/absolute', 'file.txt'));
A'folder\\absolute\\file.txt'
B'folder\\/absolute\\file.txt'
C'folder/absolute/file.txt'
D'/absolute/file.txt'
Attempts:
2 left
💡 Hint
An absolute path in any argument resets the path from that point.
📝 Syntax
advanced
2:00remaining
Which option correctly imports and uses path.join in ES modules?
Select the correct code snippet that imports path and uses path.join to join 'a' and 'b'.
A
const path = require('path');
console.log(path.join('a', 'b'));
B
import * as path from 'path';
console.log(path.join('a', 'b'));
C
import path from 'path';
console.log(path.join('a', 'b'));
D
import { join } from 'path';
console.log(join('a', 'b'));
Attempts:
2 left
💡 Hint
ES modules use import syntax, not require.
🔧 Debug
expert
2:00remaining
Why does this path.join code throw an error?
Examine the code below. Why does it throw a TypeError?
Node.js
import path from 'path';
const parts = null;
console.log(path.join(...parts));
A'parts' is an empty array, so output is an empty string.
B'path' module is not imported correctly.
C'parts' is null and cannot be spread, causing a TypeError.
D'path.join' does not accept spread arguments.
Attempts:
2 left
💡 Hint
Check the value and type of 'parts' before spreading.

Practice

(1/5)
1. What is the main purpose of path.join in Node.js?
easy
A. To read the contents of a file at a given path.
B. To combine multiple path segments into a single path safely across different operating systems.
C. To delete a file or folder at a specified path.
D. To convert a file path into a URL.

Solution

  1. Step 1: Understand the role of path.join

    path.join is used to combine parts of a file or folder path into one string that works on any operating system.
  2. Step 2: Compare with other options

    Reading, deleting files, or converting paths to URLs are different tasks not handled by path.join.
  3. Final Answer:

    To combine multiple path segments into a single path safely across different operating systems. -> Option B
  4. Quick Check:

    path.join combines paths safely [OK]
Hint: Remember: path.join builds paths, not file operations [OK]
Common Mistakes:
  • Confusing path.join with file reading or writing functions
  • Thinking path.join converts paths to URLs
  • Assuming path.join deletes files
2. Which of the following is the correct syntax to join the folder 'data' and file 'info.txt' using path.join?
easy
A. path.join('data', '/info.txt')
B. path.join('data' + '/' + 'info.txt')
C. path.join('data', 'info.txt')
D. path.join('data/info.txt')

Solution

  1. Step 1: Check correct usage of path.join arguments

    path.join takes multiple string arguments representing path segments, so path.join('data', 'info.txt') is correct.
  2. Step 2: Identify incorrect options

    path.join('data' + '/' + 'info.txt') concatenates strings before passing one argument, which is not the intended use. path.join('data/info.txt') passes a single string with a slash, which is less safe. path.join('data', '/info.txt') uses a leading slash in the second argument, which can cause an absolute path ignoring the first segment.
  3. Final Answer:

    path.join('data', 'info.txt') -> Option C
  4. Quick Check:

    Multiple arguments for segments [OK]
Hint: Use separate arguments for each path part in path.join [OK]
Common Mistakes:
  • Passing a single concatenated string instead of separate arguments
  • Using leading slashes that reset the path
  • Assuming path.join works like string concatenation
3. What will be the output of the following code on a Windows system?
const path = require('path');
const fullPath = path.join('folder', 'subfolder', 'file.txt');
console.log(fullPath);
medium
A. folder\subfolder\file.txt
B. folder/subfolder/file.txt
C. folder-subfolder-file.txt
D. folder.subfolder.file.txt

Solution

  1. Step 1: Understand path separators on Windows

    Windows uses backslashes \ as path separators, so path.join will join segments with backslashes on Windows.
  2. Step 2: Predict the output string

    The joined path will be folder\subfolder\file.txt on Windows, not forward slashes or other characters.
  3. Final Answer:

    folder\subfolder\file.txt -> Option A
  4. Quick Check:

    Windows paths use backslashes [OK]
Hint: Remember: Windows uses backslashes, Unix uses forward slashes [OK]
Common Mistakes:
  • Assuming forward slashes on Windows
  • Confusing separators with other characters
  • Ignoring platform differences
4. Identify the error in the following code snippet:
const path = require('path');
const fullPath = path.join('folder', '/subfolder', 'file.txt');
console.log(fullPath);
medium
A. The file extension '.txt' is not allowed in path.join.
B. Missing a comma between arguments in path.join.
C. Using path.join with more than two arguments is invalid.
D. The leading slash in '/subfolder' causes the path to ignore 'folder'.

Solution

  1. Step 1: Analyze the effect of a leading slash in path segments

    A leading slash in a segment like '/subfolder' makes path.join treat it as an absolute path, ignoring previous segments like 'folder'.
  2. Step 2: Check other options for errors

    There is no missing comma, multiple arguments are allowed, and file extensions are valid in path segments.
  3. Final Answer:

    The leading slash in '/subfolder' causes the path to ignore 'folder'. -> Option D
  4. Quick Check:

    Leading slash resets path [OK]
Hint: Avoid leading slashes in path.join segments [OK]
Common Mistakes:
  • Using leading slashes that reset the path
  • Thinking path.join arguments must be two only
  • Believing file extensions cause errors
5. You want to create a path to a file named 'report.pdf' inside a user's documents folder, which is stored in the variable userFolder. The documents folder name is 'Documents'. Which of the following correctly builds the path cross-platform using path.join?
hard
A. path.join(userFolder, 'Documents', 'report.pdf')
B. path.join(userFolder + '/Documents/report.pdf')
C. path.join(userFolder, '/Documents', 'report.pdf')
D. path.join(userFolder, 'Documents\report.pdf')

Solution

  1. Step 1: Use separate arguments without leading slashes

    To build a cross-platform path, pass each folder or file name as separate arguments without leading slashes. path.join(userFolder, 'Documents', 'report.pdf') does this correctly.
  2. Step 2: Identify why other options fail

    path.join(userFolder + '/Documents/report.pdf') passes a single concatenated string, which is less safe. path.join(userFolder, '/Documents', 'report.pdf') has a leading slash in 'Documents' which resets the path. path.join(userFolder, 'Documents\report.pdf') uses backslashes inside a string, which is not portable.
  3. Final Answer:

    path.join(userFolder, 'Documents', 'report.pdf') -> Option A
  4. Quick Check:

    Separate args, no leading slash [OK]
Hint: Pass each folder/file as separate arguments without slashes [OK]
Common Mistakes:
  • Using leading slashes that reset the path
  • Concatenating strings before passing to path.join
  • Hardcoding backslashes inside strings