How To Use __dirname in Node.js
source link: https://www.digitalocean.com/community/tutorials/nodejs-how-to-use__dirname
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Introduction
__dirname
is an environment variable that tells you the absolute path of the directory containing the currently executing file.
In this article, you will explore how to implement __dirname
in your Node.js project.
Prerequisites
To complete this tutorial, you will need:
- A general knowledge of Node.js. To learn more about Node.js, check out our How To Code in Node.js series.
This tutorial was verified with Node.js v17.2.0 and npm
v8.2.0.
Step 1 — Setting Up the Project
This tutorial will use the following sample directory structure to explore how __dirname
works:
dirname-example
├──index.js
├──public
├──src
│ ├──helpers.js
│ └──api
│ └──controller.js
├──cronjobs
│ └──hello.js
└──package.json
You can start by creating a dirname-example
directory in your terminal:
mkdir dirname-example
Navigate to the project directory:
cd dirname-example
Initialize it as a Node.js project:
npm init --yes
Now, you will create the directories and files to experiment with.
Step 2 — Using __dirname
You can use __dirname
to check on which directories your files live.
Create and edit controller.js
in the api
subdirectory in the src
directory:
console.log(__dirname) // "/Users/Sam/dirname-example/src/api"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
Then, run the script:
node src/api/controller.js
Create and edit hello.js
in the cronjobs
directory:
console.log(__dirname) // "/Users/Sam/dirname-example/cronjobs"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
Then, run the script:
node cronjobs/hello.js
Notice that __dirname
has a different value depending on which file you console it out. The process.cwd()
method also returns a value, but the project directory instead. The __dirname
variable always returns the absolute path of where your files live.
Step 3 — Working With Directories
In this section, you will explore how to use __dirname
to make new directories, point to them, as well as add new files.
Making New Directories
To create a new directory in your index.js
file, insert __dirname
as the first argument to path.join()
and the name of the new directory as the second:
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');
fs.mkdirSync(dirPath);
Now you’ve created a new directory, pictures
, after calling on the mdirSync()
method, which contains __dirname
as the absolute path.
Pointing to Directories
Another unique feature is its ability to point to directories. In your index.js
file, declare a variable and pass in the value of __dirname
as the first argument in path.join()
, and your directory containing static files as the second:
express.static(path.join(__dirname, '/public'));
Here, you’re telling Node.js to use __dirname
to point to the public
directory that contains static files.
Adding Files to a Directory
You may also add files to an existing directory. In your index.js
file, declare a variable and include __dirname
as the first argument and the file you want to add as the second:
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');
fs.openSync(filePath, 'hello.jpeg');
Using the openSync()
method will add the file if it does not exist within your directory.
Conclusion
Node.js provides a way for you to make and point to directories. And add files to existing directories with a modular environment variable.
For further reading, check out the Node.js documentation for __dirname
, and the tutorial on using __dirname
in the Express.js framework.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK