SOLVED: Get script directory path in Node.js [4 Methods]


NodeJS

Author: Steve Alila
Reviewer: Deepak Prasad

Different methods to get script directory path in Node.js

We can classify the four main ways of handling a Node.js get script directory according to the path returned.

 

Methods returning the absolute path

1.__dirname object

console.log(__dirname)

2. __filename object

console.log(__filename)

3. __process.cwd() method

console.log(process.cwd())

OR

Methods to return the directory name

4. path.basename() method

console.log(require('path').basename(__dirname)) 

Here is an in-depth explanation of how each method works.

 

Method-1: Using __dirname and __filename objects

Node.js wraps the script file with an immediately invoked function expression (IIFE) with file arguments: exports, require, module, __dirname, and __filename.

exports is a mutable object. It is where you attach file contents before exporting them to another file. module.exports is an alias to exports.

// moduleA.js
const cube = (number) => number * number * number;
module.exports.customFunction = cube;

module refers to the (current) file you are modifying/running. It imports another module's content using the require method.

// moduleB.js
const { customFunction } = require('./moduleA.js');

const cubeOfThree = customFunction(3);
console.log(cubeOfThree); // 27

__dirname returns the absolute path of the script directory.

const absolutePathWithoutFilename = __dirname;
console.log(absolutePathWithoutFilename);

Lastly, the __filename object attaches the script name to the absolute path of the script directory.

const absolutePathWithFilename = __filename;
console.log(absolutePathWithFilename);

 

Method-2: Using the process object

The process object is involved in (almost) all script and operating system interactions. It creates an interface for your Node.js script to read from the operating system or write to it. You can import or use it without importing it.

The process object exposes multiple properties and methods for your script to communicate with the operating system. For example, the env property reads environment variables, while the cwd() method helps during a Node.js get script directory.

// env property
if (process.env.NODE_ENV !== "production") console.log("Node.js get script directory in development mode!");

// cwd() method
console.log(process.cwd());

cwd is the short form of the Current Working Directory. So, console-logging the process.cwd() method reveals the absolute path of the current script directory.

 

Method-3: Using the path module

The path module provides utilities to work with directory and file paths. You can import and utilize its methods like join() and basename().

const path = require('path');

// join()
const customPath = path.join('Users', 'doe', 'moduleA.js');
console.log(customPath);

// basename()
const scriptDirectory = path.basename(__dirname);
console.log(scriptDirectory);

path.basename() returns the script directory's name, not the absolute path. We can use it to get the script directory, as shown in the subsequent sections of this tutorial.

 

Setup Lab Environment

This section prepares a simple directory structure to practice getting the script directory. We will set up a lab for

a Linux workflow using the Vim Editor and the terminal

AND

a Windows workflow using Visual Studio Code and its integrated terminal.

You should have installed Node.js. Better yet, follow this link to install and use Node.js and Visual Studio Code on Ubuntu.

Linux

Launch the terminal by simultaneously pressing the ctrl+alt+t keys. Make the script directory and cd into it. Next, create and open the script file using the Vim Editor.

mkdir getScriptDirectory && cd getScriptDirectory
vim index.js

Windows

Open the terminal by searching cmd. Make the project directory and open it with Visual Studio Code. I am using Git Bash, a terminal emulator you get after a Git installation on Windows, and runs most Linux commands on Windows.

mkdir getScriptDirectory 
cd getScriptDirectory
code .

SOLVED: Get script directory path in Node.js [4 Methods]

Lastly, create an index.js script file in readiness for Node.js get script directory examples.

 

Some practical examples to get script directory in Node.js

Update the script file with code for each example (1 to 4 below), then save and run the file on the terminal using the node command.

node index.js

 

Example~1: Node.js get script directory using __dirname

Input

const filePath = __dirname
console.log(filePath)

We store __dirname in the filePath variable before printing the variable.

Output

Linux

/home/[username]/getScriptDirectory

We get the script directory's path from the /home directory.

SOLVED: Get script directory path in Node.js [4 Methods]

Windows

C:\Users\[username]\getScriptDirectory

The system returns the script directory's absolute path from the C:\ root directory.

 

Example~2: Node.js get script directory using __filename

Input

const filePath = __filename
console.log(filePath)

Output

Linux

/home/[username]/getScriptDirectory/index.js

Windows

c:\Users\[username]\getScriptDirectory\index.js

This time around, the system appends the index.js file's name to the script directory's absolute path.

 

Example~3: Node.js get absolute directory path using process.cwd() method

Input

const filePath = process.cwd()
console.log(filePath)

Output

Linux

/home/[username]/getScriptDirectory

Windows

c:\Users\[username]\getScriptDirectory

Like __dirname, process.cwd() returns the absolute path of the script directory.

SOLVED: Get script directory path in Node.js [4 Methods]

 

Example~4: Node.js get script directory using path.basename()

Assume we want to get the script directory's name and NOT its absolute path. We can use the basename() method of the path module.

Input

// import the path module
const path = require('path')
// Node.js get script directory
const currentScriptDirectory = path.basename(__dirname)
// print the output
console.log(currentScriptDirectory)

We dissect the last portion of __dirname using the basename() method and store the result in currentScriptDirectory variable. Lastly, we console-log the result.

Node.js get script directory

Output

getScriptDirectory

And voila, we get the script directory's name getScriptDirectory we created in the lab setup section!

SOLVED: Get script directory path in Node.js [4 Methods]

Additionally, we can use the path.basename() method with process.cwd() and get similar results.

// import the path module
const path = require('path')
// Node.js get script directory
const currentScriptDirectory = path.basename(process.cwd())
// print the output
console.log(currentScriptDirectory)

Output

getScriptDirectory

 

Conclusion

You can Node.js get script directory's absolute path by console-logging the __dirname, __filename, and process.cwd().

Besides, you can get the exclusive directory name by running __dirname and process.cwd() objects inside the path.basename() method, as shown in this tutorial.

 

Related Keywords: Node.js get script directory, node.js get current directory, node.js get absolute path, node.js get absolute directory path

 

Steve Alila

Steve Alila

He specializes in web design, WordPress development, and data analysis, with proficiency in Python, JavaScript, and data extraction tools. Additionally, he excels in web API development, AI integration, and data presentation using Matplotlib and Plotly. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment