How to get the current file path in Node

Published on

When working with Node, it is often necessary to determine the file path of the current script. There are several ways to achieve this, each with its own advantages and use cases. In this article, we will explore the different methods for getting the current file path in Node.

__dirname

The __dirname global variable is the most straightforward way to get the current file path in Node. It is a built-in variable that is available in all modules and always contains the absolute path of the directory that the current module is in. The __dirname variable does not include the file name, only the path of the directory.

console.log(__dirname); // Outputs a string of the current file path

__filename

The __filename global variable is similar to __dirname, but it contains the absolute path of the current module, including the file name.

console.log(__filename);

process.cwd()

The process.cwd() method returns the current working directory of the Node process. This method can be useful if you want to know the current directory that the Node process was started in, rather than the current directory of the module.

const process = require('process');
console.log(process.cwd()); // Outputs a string of the current file path

path.dirname()

The path module is a built-in Node.js module that provides utilities for working with file and directory paths. The path.dirname() method can be used to get the directory path of a file.

const path = require('path');
console.log(path.dirname(__filename));

path.resolve()

The path.resolve() method can be used to get the absolute path of a file or directory. This method can be useful if you want to know the absolute path of a file or directory, regardless of the current working directory.

const path = require('path');
console.log(path.resolve(__dirname, 'file.js'));

In conclusion, there are several ways to get the current file path in Node. Depending on your use case, you may choose to use one method over another. The __dirname and __filename global variables are the most straightforward and easiest to use, while the path module provides more advanced features for working with file paths. The process.cwd() method can be useful if you need to know the current working directory of the Node process, rather than the current module.