Environmental variables are essential in developing software. They keep sensitive data, like API keys and database credentials, separate from your code. When developing Node.js applications, a popular approach is to store environment-specific settings in .env files. In this article, we will learn how to read .env files in Node.js, a skill that can dramatically increase your efficiency and productivity as a Node.js developer.
What is a .env file?
A .env file is a simple configuration file used to store environment variables. It is a plain text file containing key-value pairs, and each line represents an environment variable. An example of a `.env` file might look like this:
1 2 3 | DB_HOST=localhost DB_USER=root DB_PASS=s1mpl3 |
These files are particularly useful because they allow you to change the behavior of your application without modifying your code.
Installing dotenv package
To read .env files in Node.js, we typically use a package called dotenv. dotenv allows you to load variables from your `.env` file into `process.env`. The process.env is a global Node.js object containing your current environment’s variable names and values.
Let’s install the dotenv package using npm (Node package manager):
npm install dotenv
Reading .env file using dotenv
After installing dotenv, it’s time to use it. Let’s suppose we have a `.env` file in the root directory of our Node.js project with the following contents:
1 2 3 | DB_HOST=localhost DB_USER=root DB_PASS=s1mpl3 |
To read this `.env` file, you have to require the dotenv module and call its config method at the very beginning of your application – usually in your main file (like app.js or index.js):
1 | require('dotenv').config(); |
Once you’ve done this, you can access the values stored in your .env file through `process.env` anywhere in your application:
1 2 3 | console.log(process.env.DB_HOST); // Outputs: localhost console.log(process.env.DB_USER); // Outputs: root console.log(process.env.DB_PASS); // Outputs: s1mpl3 |
Handling Different Environments
One significant advantage of using `.env` files is handling different environments, like development, testing, and production. You might want to use different databases or different API keys in development and production.
To do this, create different `.env` files for each environment, like .env.development and .env.production. Then, load the correct file based on your current environment:
1 2 | // require and configure dotenv, will load .env.development or .env.production require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` }); |
To set the NODE_ENV variable, you can set it on the command line before running your application:
NODE_ENV=production node app.js
This will load `.env.production` file. For development, replace production with development.
Conclusion
In this article, we’ve seen how environment variables and .env files are crucial for managing settings in Node.js applications. By using the dotenv package, we can efficiently read these settings and adapt our application’s behavior accordingly. Whether you’re working in development, testing, or production, understanding how to properly manage and read .env files in Node.js will undoubtedly prove beneficial for your projects.