Bird
Raised Fist0
Node.jsframework~10 mins

path.parse and path.format in Node.js - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to parse a file path into its parts using path.parse.

Node.js
const path = require('path');
const parsed = path.[1]('/home/user/file.txt');
console.log(parsed);
Drag options to blanks, or click blank then click option'
Abasename
Bformat
Cjoin
Dparse
Attempts:
3 left
💡 Hint
Common Mistakes
Using path.format instead of path.parse
Using path.basename which only returns the file name
2fill in blank
medium

Complete the code to create a path string from an object using path.format.

Node.js
const path = require('path');
const obj = { root: '/', dir: '/home/user', base: 'file.txt' };
const fullPath = path.[1](obj);
console.log(fullPath);
Drag options to blanks, or click blank then click option'
Aparse
Bformat
Cresolve
Dbasename
Attempts:
3 left
💡 Hint
Common Mistakes
Using path.parse which does the opposite
Using path.resolve which resolves absolute paths
3fill in blank
hard

Fix the error in the code to correctly parse the path '/var/log/sys.log'.

Node.js
const path = require('path');
const parts = path.[1]('/var/log/sys.log');
console.log(parts.ext);
Drag options to blanks, or click blank then click option'
Aparse
Bformat
Cjoin
Dbasename
Attempts:
3 left
💡 Hint
Common Mistakes
Using path.format which expects an object
Using path.basename which returns only the file name
4fill in blank
hard

Fill both blanks to parse a path and then format it back to a string.

Node.js
const path = require('path');
const parsed = path.[1]('/etc/nginx/nginx.conf');
const formatted = path.[2](parsed);
console.log(formatted);
Drag options to blanks, or click blank then click option'
Aparse
Bjoin
Cformat
Dbasename
Attempts:
3 left
💡 Hint
Common Mistakes
Using format before parse
Using join or basename which do different things
5fill in blank
hard

Fill all three blanks to parse a path, change its base, and format it back.

Node.js
const path = require('path');
const parsed = path.[1]('/usr/local/bin/script.sh');
parsed.base = '[2]';
parsed.name = '[3]';
const newPath = path.format(parsed);
console.log(newPath);
Drag options to blanks, or click blank then click option'
Aformat
Bscript_backup.sh
Cscript_backup
Dparse
Attempts:
3 left
💡 Hint
Common Mistakes
Changing base but not name
Using format instead of parse to get parts

Practice

(1/5)
1. What does path.parse do in Node.js?
easy
A. It breaks a file path into parts like root, dir, base, name, and ext.
B. It combines multiple file paths into one string.
C. It reads the contents of a file at the given path.
D. It deletes a file at the specified path.

Solution

  1. Step 1: Understand the purpose of path.parse

    path.parse takes a file path string and splits it into an object with properties like root, dir, base, name, and ext.
  2. Step 2: Compare with other options

    Options A, C, and D describe different file system operations, not path parsing.
  3. Final Answer:

    It breaks a file path into parts like root, dir, base, name, and ext. -> Option A
  4. Quick Check:

    path.parse splits path into parts [OK]
Hint: Remember: parse means split path into pieces [OK]
Common Mistakes:
  • Confusing path.parse with reading file contents
  • Thinking path.parse combines paths
  • Mixing up path.parse with deleting files
2. Which of the following is the correct way to use path.format to build a path from parts?
easy
A. path.format('file.txt')
B. path.format('/home/user/file.txt')
C. path.format({ root: '/', dir: '/home/user', base: 'file.txt' })
D. path.format(['home', 'user', 'file.txt'])

Solution

  1. Step 1: Identify correct argument type for path.format

    path.format expects an object with path parts like root, dir, base, name, or ext.
  2. Step 2: Check each option

    path.format({ root: '/', dir: '/home/user', base: 'file.txt' }) correctly passes an object with root, dir, and base. Options B, C, and D pass strings or arrays, which are invalid.
  3. Final Answer:

    path.format({ root: '/', dir: '/home/user', base: 'file.txt' }) -> Option C
  4. Quick Check:

    path.format needs object with parts [OK]
Hint: path.format needs an object, not a string or array [OK]
Common Mistakes:
  • Passing a string instead of an object to path.format
  • Using an array instead of an object
  • Confusing path.format with path.parse usage
3. What is the output of this code?
const path = require('path');
const parsed = path.parse('/home/user/docs/file.txt');
console.log(parsed.base);
medium
A. '/home/user/docs/file.txt'
B. 'file.txt'
C. 'file'
D. '.txt'

Solution

  1. Step 1: Understand what path.parse returns

    path.parse returns an object with properties including base, which is the last part of the path with extension.
  2. Step 2: Check the base property for given path

    For '/home/user/docs/file.txt', base is 'file.txt'.
  3. Final Answer:

    'file.txt' -> Option B
  4. Quick Check:

    parsed.base = 'file.txt' [OK]
Hint: base is filename with extension from path.parse [OK]
Common Mistakes:
  • Confusing base with dir or name
  • Expecting full path instead of base
  • Mixing base with extension only
4. Identify the error in this code snippet:
const path = require('path');
const parts = path.parse('/var/log/sys.log');
const newPath = path.format(parts.dir + '/backup/' + parts.base);
console.log(newPath);
medium
A. path.format expects an object, but a string was passed.
B. path.parse cannot parse absolute paths.
C. The variable parts is not defined.
D. The console.log statement is missing parentheses.

Solution

  1. Step 1: Check the argument passed to path.format

    path.format requires an object with path parts, but here a string is passed by concatenating parts.dir, '/backup/', and parts.base.
  2. Step 2: Understand correct usage of path.format

    To add '/backup/' folder, modify parts.dir property or create a new object, then pass that object to path.format.
  3. Final Answer:

    path.format expects an object, but a string was passed. -> Option A
  4. Quick Check:

    path.format needs object, not string [OK]
Hint: path.format always needs an object, never a string [OK]
Common Mistakes:
  • Passing a string instead of an object to path.format
  • Assuming path.parse fails on absolute paths
  • Forgetting parentheses in console.log (not true here)
5. Given this code, what will console.log(newPath) output?
const path = require('path');
const parts = path.parse('/usr/local/bin/node');
const updatedParts = { ...parts, dir: parts.dir + '/backup' };
const newPath = path.format(updatedParts);
console.log(newPath);
hard
A. '/usr/local/bin/backup/'
B. '/usr/local/bin/node/backup'
C. '/usr/local/bin/node'
D. '/usr/local/bin/backup/node'

Solution

  1. Step 1: Analyze how updatedParts modifies dir

    updatedParts copies all parts but changes dir to parts.dir + '/backup', so dir becomes '/usr/local/bin/backup'.
  2. Step 2: Understand path.format output

    path.format builds path from updatedParts, combining dir and base ('node'), resulting in '/usr/local/bin/backup/node'.
  3. Final Answer:

    '/usr/local/bin/backup/node' -> Option D
  4. Quick Check:

    Modified dir + base = '/usr/local/bin/backup/node' [OK]
Hint: Changing dir in parts changes folder path in output [OK]
Common Mistakes:
  • Appending backup to base instead of dir
  • Confusing order of path parts
  • Forgetting to spread parts before modifying