Subtle difference between __dirname and process.cwd() in node.js
Getting the current working directory(CWD) is one of the basic and most important features in a product. In Node.js, CWD can be obtained with either __dirname variable or process.cwd(). But the output returned by each command differs based on the folder location where the node command is invoked.
__dirname returns the path where the js file that is being executed is present, whereas process.cwd() returns the path where node command is invoked
Consider this basic example,
$HOME/Documents/cwd.js
console.log(__dirname);
console.log(process.cwd());
When the above js is invoked from $HOME, the output will be
test@test:~$ node Documents/cwd.js
/home/test/Documents
/home/test
If node command is invoked from $HOME/Documents, the output of both command will be same
test@test:~$ node Documents/cwd.js
/home/test/Documents
/home/test/Documents
The difference is so minimal that can lead to a sleepless night if not handled properly.