Bienvenidos sean a este post, hoy veremos una particuaridad que nos brinda este framework.
En los dos posts anteriores hemos trabajado con dos ejemplos de aplicaciones hechas con node y Express. En ambos casos hemos establecido mediante listen el puerto 3000 para conectarnos con un browser. Pero en produccion ese puerto debe ser el 80, el puerto de http, o en caso de usar una comunicacion segura el puerto 443, https, pero tambien podemos usar otro para pasar a traves de un proxy. En ambos casos se establecio en el codigo pero lo ideal es que este se establezca a traves de un archivo de configuracion, o algun otro de este estilo. Afortunadamente esto es relativamente facil en Express con las librerias correctas.
Para entender este concepto vamos a necesitar el ejemplo que vimos en el post anterior, sino lo poseen les dejo un link para descargarlo:
Simplemente extraigan el directorio en el PC y ya esta listo para ser utilizado. Lo primero que haremos sera ingresar al directorio y ejecutar el siguiente comando:
$ npm install config
Este nos instalara el modulo encargado de las configuraciones. A continuacion ejecutaremos este otro comando:
$ npm install @types/config --save-dev
Este otro instalara los archivos de declaracion para typescript. Con todo esto realizado nuestro siguiente paso sera modificar a main.ts de la siguiente manera:
import express from 'express';
import config from 'config';
import * as Indice from './routes/index';
import * as Login from './routes/login';
enum OpcConfig {
PUERTO = 'puerto'
}
let app = express();
let puerto = 3000;
if (config.has(OpcConfig.PUERTO)) {
puerto = config.get(OpcConfig.PUERTO);
} else {
console.log(`puerto no encontrado, usando default ${puerto}`);
}
app.use('/', Indice.router);
app.use('/', Login.router);
app.listen(puerto,() => {
console.log(`escuchando en el puerto ${puerto}`);
});
La primera modificacion es el agregado de la importacion del nuevo modulo. La siguiente modificacion es la creacion de un enum donde almacenaremos una sola constante que almacena la palabra puerto, esto lo hacemos asi porque nos permite enlistar mas configuraciones en caso de ser necesario. Lo siguiente es agregar una nueva variable llamada puerto y esta almacena el valor que tenia anteriormente, siendo este ahora el valor predeterminado o default, para luego usar un condicional. Este condicional verifica si el archivo de configuracion tiene un campo con el valor de la constante en enum. En caso de ser verdadero le establece el valor en ese campo del archivo a la variable puerto de lo contrario muestra un mensaje que no se encontro y usa el valor predeterminado. Por ultimo, modificamos al listen donde en lugar de tener el valor del puerto le pasamos la variable y modificamos el mensaje para que muestre el valor de la variable.
La siguiente modificacion es por fuera de este archivo, para ello debemos crear un nuevo directorio en el raiz de la aplicacion con el nombre de config y dentro de este crearemos un nuevo archivo con el nombre de default.json. En este agregaremos el siguiente codigo:
{
"puerto": 9999
}
Este sera simplemente el nuevo puerto que le asignaremos a la aplicacion, la otra ventaja es que al igual que en el enum podemos agregar todas las opciones que necesitemos y siempre las obtendremos desde aqui. Por otro lado, es el mismo valor que en la constante PUERTO. Con todo esto realizado podemos pasar a compilarlo mediante tsc y luego ejecutarlo con node main. La salida sera la siguiente:
$ node main
escuchando en el puerto 9999
Ahora en lugar de conectarse al puerto 3000 lo hacen al 9999 pero el resto del programa seguira funcionando de la misma manera que lo vimos en el post anterior. Si no existiera el campo o no informamos ningun valor, la salida sera la siguiente:
$ node main
puerto no encontrado, usando default 3000
escuchando en el puerto 3000
Y la otra buena noticia es que no es necesario recompilarlo para cambiar el puerto sino simplemente modificando el archivo json. Antes de finalizar les dejo un link con todos los archivos del proyecto y los modificados en este post:
En resumen, hoy hemos visto al modulo config, que es, para que sirve, como se instala, como se aplica en un codigo, como lo configuramos y como nos facilita el manejo de los datos de nuestra aplicacion. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
