How to Join Paths in Node.js

Joining file paths correctly is crucial for building Node.js applications that work across different operating systems. As the creator of CoreUI with over 11 years of Node.js development experience, I’ve learned that string concatenation for paths leads to platform-specific bugs. The path.join() method provides a safe, cross-platform solution for combining path segments with the correct separators.

Use path.join() to safely combine path segments with the correct separators for the current operating system.

const path = require('path')

// Basic path joining
const configPath = path.join('config', 'database.json')
console.log(configPath) // config/database.json (Unix) or config\database.json (Windows)

// Join multiple segments
const uploadPath = path.join('public', 'uploads', 'images', 'profile.jpg')
console.log(uploadPath) // public/uploads/images/profile.jpg

// Handle relative paths and navigation
const relativePath = path.join('src', '..', 'config', 'app.js')
console.log(relativePath) // config/app.js

// Join with __dirname for absolute paths
const templatePath = path.join(__dirname, 'templates', 'email.html')
console.log(templatePath) // /current/directory/templates/email.html

// Handle empty and undefined segments
const safePath = path.join('logs', '', 'app.log')
console.log(safePath) // logs/app.log (empty segments are ignored)

The path.join() method automatically uses the correct path separator for the current platform, handles relative path navigation like .. and ., and ignores empty string arguments. It normalizes the resulting path and resolves any relative components. Never use string concatenation with / or \\ for path joining, as this creates platform-specific code that will break when deployed to different operating systems.

Best Practice Note:

In CoreUI projects, we use path.join() everywhere we work with file paths - from asset bundling to configuration loading and log file management. This practice ensures our Node.js applications run reliably whether developed on macOS, deployed on Linux servers, or tested on Windows environments.


Speed up your responsive apps and websites with fully-featured, ready-to-use open-source admin panel templates—free to use and built for efficiency.


About the Author

Subscribe to our newsletter
Get early information about new products, product updates and blog posts.
How to Hide Scrollbar with CSS
How to Hide Scrollbar with CSS

Understanding the Difference Between NPX and NPM
Understanding the Difference Between NPX and NPM

How to check if a key exists in JavaScript object?
How to check if a key exists in JavaScript object?

How to declare the optional function parameters in JavaScript?
How to declare the optional function parameters in JavaScript?

Answers by CoreUI Core Team