Environment Variables Configuration in Node.js Express App

Effortless Environment Management in Node and Express

Environment variables are a cornerstone of any professional Node.js and Express application. They allow for secure and flexible management of sensitive data such as API keys, database credentials, and app-specific settings. Here’s how you can properly set up and manage environment variables to make your app production-ready.


Step 1: Setting Up the .env File

Begin by creating a .env file in the root of your project. Add the following variable to define your development environment:

NODE_ENV=development

It’s a good practice to create a .env.example file as well. This file provides a reference for collaborators about which variables are required, without exposing sensitive values.

Next, update your .gitignore file to ensure the .env file is not pushed to version control. This keeps your sensitive data secure.


Step 2: Loading Environment Variables with dotenv-cli

In development, environment variables in the .env file need to be loaded into the runtime environment. For this, install dotenv-cli:

npm install dotenv-cli --save-dev  

Update the dev script in your package.json to use dotenv-cli with nodemon:

"scripts": {  
"dev": "dotenv -- nodemon src/server.ts"
}

Run the app using npm run dev, and your environment variables will now be accessible in your code.


Step 3: Centralizing Variables in a Config File

Rather than referencing process.env throughout your app, centralize all environment variables in a configuration file. Create a config.ts file in the src folder with the following:

export const config = {  
env: process.env.NODE_ENV || "development",
port: parseInt(process.env.PORT || "3000", 10),
};

This approach ensures:

  • Default values for variables.
  • Easy modification and centralized access.
  • Better maintainability for larger projects.

Step 4: Updating the App to Use the Config File

Replace direct references to process.env in your app with the config object. For example:

  • In server.ts, console.log(`Running in ${process.env.NODE_ENV}`);
  • In index.ts, replace hardcoded port values with app.listen(config.port, () => { console.log(`API running on port ${config.port}`); });

Step 5: Testing Your Setup

Update your .env file to include the PORT variable:

PORT=3000  

Don’t forget to add this variable to your .env.example file as well. Use tools like the REST Client in VS Code to test API requests and verify everything works as expected.


Why This Matters

Centralizing environment variables and using tools like dotenv-cli improves the scalability, security, and maintainability of your app. It prevents hardcoded values, reduces errors, and simplifies onboarding for new developers.

With environment variables properly configured, your Node.js and Express app is now more robust and ready for production. Stay tuned for the next part of the series, where we’ll dive into additional best practices and advanced configurations!

Share this article

Similar Posts