Les variables d'entorn són una manera de configurar aplicacions sense haver de modificar el codi font. Aquestes variables es poden utilitzar per emmagatzemar informació sensible com ara claus d'API, cadenes de connexió a bases de dades, i altres configuracions que poden variar entre diferents entorns (desenvolupament, proves, producció).
Conceptes Clau
-
Què són les variables d'entorn?
- Són variables externes al codi de l'aplicació que poden influir en el comportament del programa.
- Es defineixen en el sistema operatiu o en fitxers de configuració.
-
Per què utilitzar variables d'entorn?
- Seguretat: Eviten que informació sensible estigui codificada directament en el codi font.
- Flexibilitat: Permeten canviar configuracions sense necessitat de modificar el codi.
- Portabilitat: Faciliten el desplegament de l'aplicació en diferents entorns amb configuracions específiques.
Configuració de Variables d'Entorn
Definir Variables d'Entorn
Les variables d'entorn es poden definir de diverses maneres, depenent del sistema operatiu i del context en què s'executa l'aplicació.
En Linux/MacOS
En Windows
Accedir a Variables d'Entorn en Node.js
En Node.js, les variables d'entorn es poden accedir a través de l'objecte process.env
.
const port = process.env.PORT || 3000; const dbHost = process.env.DB_HOST || 'localhost'; const dbUser = process.env.DB_USER || 'root'; const dbPass = process.env.DB_PASS || 'secret'; console.log(`Server running on port ${port}`); console.log(`Database host: ${dbHost}`); console.log(`Database user: ${dbUser}`);
Utilitzar fitxers .env
Una pràctica comuna és utilitzar un fitxer .env
per definir les variables d'entorn. Aquest fitxer es carrega en l'entorn d'execució de l'aplicació utilitzant una biblioteca com dotenv
.
Instal·lació de dotenv
Crear un fitxer .env
Carregar el fitxer .env
en l'aplicació
require('dotenv').config(); const port = process.env.PORT || 3000; const dbHost = process.env.DB_HOST || 'localhost'; const dbUser = process.env.DB_USER || 'root'; const dbPass = process.env.DB_PASS || 'secret'; console.log(`Server running on port ${port}`); console.log(`Database host: ${dbHost}`); console.log(`Database user: ${dbUser}`);
Exercicis Pràctics
Exercici 1: Configurar i Accedir a Variables d'Entorn
-
Crea un fitxer
.env
amb les següents variables:APP_NAME=MyNodeApp APP_VERSION=1.0.0
-
Instal·la la biblioteca
dotenv
si no ho has fet ja:npm install dotenv
-
Crea un fitxer
index.js
i carrega les variables d'entorn:require('dotenv').config(); const appName = process.env.APP_NAME; const appVersion = process.env.APP_VERSION; console.log(`Application Name: ${appName}`); console.log(`Application Version: ${appVersion}`);
-
Executa l'aplicació:
node index.js
Exercici 2: Utilitzar Variables d'Entorn per Configurar un Servidor
-
Crea un fitxer
.env
amb les següents variables:PORT=4000
-
Crea un fitxer
server.js
i configura un servidor HTTP utilitzant la variable d'entornPORT
:require('dotenv').config(); const http = require('http'); const port = process.env.PORT || 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); }); server.listen(port, () => { console.log(`Server running at http://localhost:${port}/`); });
-
Executa l'aplicació:
node server.js
Errors Comuns i Consells
- Error: Variable d'entorn no definida: Assegura't que has carregat el fitxer
.env
correctament ambdotenv.config()
. - Error: Fitxer
.env
no trobat: Verifica que el fitxer.env
es troba en el directori arrel del projecte. - Consell: No incloguis el fitxer
.env
en el control de versions (afegiu-lo a.gitignore
) per evitar exposar informació sensible.
Conclusió
Les variables d'entorn són una eina poderosa per gestionar configuracions sensibles i específiques d'entorn en aplicacions Node.js. Utilitzant biblioteques com dotenv
, podem simplificar la gestió d'aquestes variables i assegurar-nos que la nostra aplicació sigui segura i fàcil de configurar en diferents entorns.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu