Bird
Raised Fist0
Node.jsframework~5 mins

process.env for environment variables in Node.js - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is process.env in Node.js?

process.env is an object in Node.js that holds environment variables as key-value pairs. It allows your app to access system or user-defined settings.

Click to reveal answer
beginner
How do you access an environment variable named PORT in Node.js?
<p>You access it using <code>process.env.PORT</code>. For example, <code>const port = process.env.PORT;</code></p>
Click to reveal answer
beginner
Why should sensitive data like API keys be stored in environment variables instead of code?

Storing sensitive data in environment variables keeps secrets out of your codebase. This helps protect them from being exposed if the code is shared or published.

Click to reveal answer
beginner
What happens if you try to access an environment variable that is not set?

If the variable is not set, process.env.VARIABLE_NAME returns undefined. You can provide a default value to avoid errors.

Click to reveal answer
intermediate
How can you set environment variables for a Node.js app when running it locally?

You can set them inline before the command, like PORT=3000 node app.js on Unix systems, or use a .env file with packages like dotenv.

Click to reveal answer
What type of value does process.env store for each environment variable?
AStrings
BNumbers
CBooleans
DObjects
How do you safely provide a default port if process.env.PORT is undefined?
Aconst port = process.env.PORT ? null : 3000;
Bconst port = 3000 || process.env.PORT;
Cconst port = process.env.PORT && 3000;
Dconst port = process.env.PORT || 3000;
Which package helps load environment variables from a .env file in Node.js?
Aexpress
Bdotenv
Cnodemon
Dcors
Why is it a bad idea to hardcode API keys directly in your Node.js code?
AIt makes the code run slower
BIt causes syntax errors
CIt exposes secrets if code is shared
DIt prevents the app from starting
What will console.log(process.env.MY_VAR) output if MY_VAR is not set?
Aundefined
Bnull
Cempty string
D0
Explain how to use process.env to manage configuration in a Node.js app.
Think about how environment variables help keep your app flexible and secure.
You got /4 concepts.
    Describe how to set environment variables locally and how to load them automatically in Node.js.
    Consider both manual and automated ways to provide environment variables.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does process.env in Node.js primarily provide access to?
      easy
      A. File system paths
      B. User input from the console
      C. Network socket information
      D. Environment variables as strings

      Solution

      1. Step 1: Understand what process.env represents

        process.env is a special object in Node.js that holds environment variables as strings.
      2. Step 2: Identify the correct usage context

        It is used to access configuration values or secrets set outside the code, not file paths or user input.
      3. Final Answer:

        Environment variables as strings -> Option D
      4. Quick Check:

        process.env = environment variables [OK]
      Hint: Remember: process.env holds environment variables as strings [OK]
      Common Mistakes:
      • Thinking process.env reads user input
      • Confusing process.env with file system APIs
      • Assuming process.env contains numbers or objects
      2. Which of the following is the correct way to access an environment variable named API_KEY in Node.js?
      easy
      A. process.env.API_KEY()
      B. process.env['API_KEY']()
      C. process.env.API_KEY
      D. process.env.get('API_KEY')

      Solution

      1. Step 1: Recall the syntax for accessing environment variables

        Environment variables in process.env are accessed like object properties, either with dot notation or bracket notation without parentheses.
      2. Step 2: Identify the correct syntax

        Using process.env.API_KEY correctly accesses the variable as a string. The other options incorrectly use function call syntax.
      3. Final Answer:

        process.env.API_KEY -> Option C
      4. Quick Check:

        Access env vars as properties, no parentheses [OK]
      Hint: Use dot or bracket notation without () to access env vars [OK]
      Common Mistakes:
      • Adding parentheses as if env vars are functions
      • Using .get() method which doesn't exist
      • Confusing bracket notation with function call
      3. Consider this Node.js code snippet:
      console.log(process.env.PORT || 3000);

      If the environment variable PORT is set to 8080, what will be printed?
      medium
      A. 8080
      B. undefined
      C. 3000
      D. null

      Solution

      1. Step 1: Understand the logical OR operator usage

        The expression process.env.PORT || 3000 means if process.env.PORT is truthy, use it; otherwise, use 3000.
      2. Step 2: Evaluate the value of process.env.PORT

        Since PORT is set to string "8080" (a truthy value), the expression evaluates to "8080".
      3. Final Answer:

        8080 -> Option A
      4. Quick Check:

        Env var set? Use it; else default [OK]
      Hint: If env var exists and is truthy, || returns it [OK]
      Common Mistakes:
      • Assuming PORT is a number, not a string
      • Expecting default 3000 even when PORT is set
      • Confusing undefined with null
      4. What is the main issue with this code snippet?
      const secret = process.env.SECRET_KEY;
      console.log(secret.length);

      Assuming SECRET_KEY is not set in the environment.
      medium
      A. It will throw a TypeError
      B. It will print undefined
      C. It will print 0
      D. It will print null

      Solution

      1. Step 1: Check the value of process.env.SECRET_KEY when unset

        If SECRET_KEY is not set, process.env.SECRET_KEY is undefined.
      2. Step 2: Understand what happens calling .length on undefined

        Trying to access length property on undefined causes a TypeError because undefined has no properties.
      3. Final Answer:

        It will throw a TypeError -> Option A
      4. Quick Check:

        Accessing property on undefined throws TypeError [OK]
      Hint: Check if env var exists before accessing properties [OK]
      Common Mistakes:
      • Assuming undefined has length 0
      • Expecting undefined to print as string
      • Not handling missing env vars safely
      5. You want to safely read an environment variable DB_PASSWORD and provide a default of "defaultPass" if it is missing or empty. Which code snippet correctly does this?
      hard
      A. const password = process.env.DB_PASSWORD ?? "defaultPass";
      B. const password = process.env.DB_PASSWORD ? process.env.DB_PASSWORD : "defaultPass";
      C. const password = process.env.DB_PASSWORD ? "defaultPass" : process.env.DB_PASSWORD;
      D. const password = process.env.DB_PASSWORD && "defaultPass";

      Solution

      1. Step 1: Understand the conditional operators for empty strings

        The ?? operator only defaults null/undefined, keeping empty strings. Ternary checks truthiness, defaulting falsy values like empty strings.
      2. Step 2: Choose the correct conditional to handle missing or empty strings

        The ternary operator process.env.DB_PASSWORD ? process.env.DB_PASSWORD : "defaultPass" returns the env var if it is a non-empty string (truthy), else the default. This safely handles missing or empty values.
      3. Final Answer:

        const password = process.env.DB_PASSWORD ? process.env.DB_PASSWORD : "defaultPass"; -> Option B
      4. Quick Check:

        Use ternary to handle empty or missing env vars [OK]
      Hint: Use ternary to check for empty or missing env vars [OK]
      Common Mistakes:
      • Using ?? which allows empty strings through
      • Using && which returns wrong value
      • Swapping the ternary branches