dotenv helps you keep secret settings like passwords safe and separate from your code. It loads these settings from a file into your app automatically.
dotenv for environment configuration in Node.js
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Node.js
require('dotenv').config();
console.log(process.env.YOUR_VARIABLE);Put your secret settings in a file named .env in your project root.
Each line in .env looks like KEY=value.
Examples
Node.js
# .env file API_KEY=12345 PORT=3000
.env file and prints the API key.Node.js
require('dotenv').config();
console.log(process.env.API_KEY);.env.Node.js
require('dotenv').config({ path: './config/.env' });
Sample Program
This program loads the greeting and name from the .env file and prints a message.
Node.js
/* Create a file named .env in your project root with: GREETING=Hello NAME=World */ require('dotenv').config(); const greeting = process.env.GREETING; const name = process.env.NAME; console.log(`${greeting}, ${name}!`);
Important Notes
Never commit your .env file to public repositories to keep secrets safe.
Use process.env.VARIABLE_NAME to access your variables in code.
If a variable is missing, process.env.VARIABLE_NAME will be undefined.
Summary
dotenv loads secret settings from a file into your app safely.
Keep your secrets out of code and easily change settings per environment.
Access variables using process.env after calling require('dotenv').config().
Practice
1. What is the main purpose of using
dotenv in a Node.js project?easy
Solution
Step 1: Understand what dotenv does
dotenvreads a file (usually.env) and loads variables intoprocess.env.Step 2: Identify the main purpose
This allows your app to access secret or environment-specific settings safely without hardcoding them.Final Answer:
To load environment variables from a file intoprocess.env-> Option CQuick Check:
dotenv loads env vars = C [OK]
Hint: dotenv loads .env variables into process.env [OK]
Common Mistakes:
- Thinking dotenv compiles or runs code
- Confusing dotenv with database or server tools
- Expecting dotenv to manage app logic
2. Which of the following is the correct way to load environment variables using dotenv in a Node.js file?
easy
Solution
Step 1: Recall the dotenv usage syntax
The official and common way to load variables is callingrequire('dotenv').config()at the start of your app.Step 2: Check other options for correctness
The other options use incorrect method names or syntax not supported by dotenv.Final Answer:
require('dotenv').config() -> Option AQuick Check:
Use config() method to load dotenv [OK]
Hint: Use require('dotenv').config() to load env vars [OK]
Common Mistakes:
- Using wrong method names like load or setup
- Forgetting to call config() function
- Trying to import dotenv without config call
3. Given the following code and
.env file, what will be the output?// .env file content
API_KEY=12345
PORT=8080require('dotenv').config();
console.log(process.env.API_KEY);
console.log(process.env.PORT);medium
Solution
Step 1: dotenv loads variables from .env into process.env
After callingrequire('dotenv').config(),process.env.API_KEYis set to "12345" andprocess.env.PORTis set to "8080" as strings.Step 2: console.log prints the values
The console will output the values exactly as strings, separated by new lines.Final Answer:
12345 8080 -> Option DQuick Check:
dotenv loads vars as strings = 12345\n8080 [OK]
Hint: dotenv sets process.env vars as strings from .env [OK]
Common Mistakes:
- Expecting numbers instead of strings
- Not calling config() before accessing vars
- Assuming variables are undefined without loading dotenv
4. What is the error in the following code snippet that prevents environment variables from loading correctly?
const dotenv = require('dotenv');
dotenv.config;
console.log(process.env.SECRET_KEY);medium
Solution
Step 1: Check how dotenv.config is called
The code usesdotenv.config;without parentheses, so the function is not executed.Step 2: Understand the effect of missing parentheses
Without callingconfig(), environment variables are not loaded intoprocess.env, soSECRET_KEYremains undefined.Final Answer:
Missing parentheses after config function call -> Option AQuick Check:
Call config() with () to load env vars [OK]
Hint: Always call config() with parentheses to load env [OK]
Common Mistakes:
- Forgetting parentheses on config function
- Assuming require auto-executes config
- Ignoring missing .env file or variable
5. You want to use dotenv to load different environment variables for development and production. Your
.env file has NODE_ENV=development and API_URL=http://localhost:3000. You also have a .env.production file with NODE_ENV=production and API_URL=https://api.example.com. How can you load the correct file based on the environment?hard
Solution
Step 1: Understand dotenv supports custom paths
dotenv's config function accepts apathoption to specify which file to load.Step 2: Use NODE_ENV to select the file dynamically
By callingrequire('dotenv').config({ path: `.env.${process.env.NODE_ENV}` }), you load.env.developmentor.env.productionbased on the environment.Final Answer:
Call require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` }) after setting NODE_ENV -> Option BQuick Check:
Use config({ path }) to load env files by environment [OK]
Hint: Use config({ path: `.env.${NODE_ENV}` }) to load env files [OK]
Common Mistakes:
- Not specifying path option for different env files
- Manually renaming files instead of dynamic loading
- Using nonexistent dotenv.loadEnv method
