In this article we'll see what are __dirname and __filename variables in Node.js and how to use them.
__dirname in Node.js
__dirname in Node.js is a convenience variable which stores the absolute path of the directory where the currently executing file (module) resides.
__dirname examples
Suppose project structure is as given below.
myapp
|   app.js
|   package-lock.json
|   package.json  
+---bin 
+---controllers
|       product.js     
+---node_modules         
+---public
|   +---docs      
|   +---images
|   +---javascripts
|   +---stylesheets           
+---routes
|       index.js
|       users.js    
\---views
        error.ejs
        index.ejs
In the app.js if we have the following line of code
console.log('Directory path- ' + __dirname);
then on running the app.js file output is
Directory path- D:\NETJS\NodeJS\nodews\myapp
Which is the absolute path of the directory where app.js file resides.
You can use __dirname in conjunction with path.join() to create paths relative to current file path. For example, if you need to read a file named hello.txt which is inside /public/docs as per the given project structure then you can construct the path using __dirname as given below-
const filePath = path.join(__dirname, "/public/docs/", "hello.txt");
console.log(filePath);
fs.readFile(filePath,'utf8', (err, data) => {
  if(err){
    console.log('Error while reading file');
  }else{
    console.log(data);
  }
});
Output for the filePath is- 
  D:\NETJS\NodeJS\nodews\myapp\public\docs\hello.txt
__filename in Node.js
__filename in Node.js is a convenience variable which stores the current module file's absolute path.
__filename examples
If we use the same project structure as already mentioned above then having the following lines in app.js
console.log('File Name- ' + __filename);
console.log('Directory path- ' + __dirname);
Gives us the following output
File Name- D:\NETJS\NodeJS\nodews\myapp\app.js Directory path- D:\NETJS\NodeJS\nodews\myapp
If you want just the file name not the full path then wrap __filename in path.basename() method.
console.log('File Name- ' + path.basename(__filename));
Output
File Name- app.js
That's all for this topic __dirname and __filename in Node.js. If you have any doubt or any suggestions to make please drop a comment. Thanks!
Related Topics
You may also like-
No comments:
Post a Comment