¿Cómo implementar un servidor con Express y TypeScript?
Bienvenido a un emocionante viaje de aprendizaje sobre cómo implementar un servidor con Express y TypeScript. Aquí aprenderás desde lo más básico hasta cómo puedes mejorar la experiencia de desarrollo utilizando características de TypeScript y algún que otro paquete útil. ¡Vamos a sumergirnos!
¿Cómo instalar Express y sus tipos en TypeScript?
Para iniciar, es importante instalar Express como una dependencia de producción. Esto nos ayudará a tener un servidor básico funcionando. Además, aprovecharemos las ventajas de TypeScript al importar los tipos necesarios, en este caso, request y response de Express.
importexpress,{Request,Response}from'express';
¿Cómo crear un aplicativo básico de Express?
La creación de un servidor de Express es sencilla. El primer paso es instanciar una aplicación Express. TypeScript nos ofrece la opción de definir el tipo de la aplicación, lo que proporciona una sintaxis clara y nos ayuda a prevenir errores.
const app: express.Application=express();
Posteriormente, configuramos una ruta básica para que responda con un mensaje cuando se haga una solicitud al servidor.
Para que nuestro servidor esté disponible, configuramos Express para escuchar en un puerto específico. Esto se puede hacer de la siguiente manera:
app.listen(3500,()=>{console.log('Listening on http://localhost:3500');});
¿Cómo mejorar la experiencia con TypeScript?
Aunque Express ya incluye sus tipos, a veces requerimos más tipados para nuestro entorno de desarrollo. Aquí es donde entran las dependencias de desarrollo para tipos adicionales, como @types/express y @types/node:
yarnadd -D @types/express @types/node
¿Cómo configurar variables de entorno usando .env?
Para administrar configuraciones como puertos de manera más eficiente, utilizamos variables de entorno, cargadas a través de la biblioteca dotenv.
Creamos un archivo llamado .env donde almacenaremos nuestras variables.
Creamos un archivo de configuración que importe y configure dotenv, exportando las variables necesarias.
import{ config }from'./config/index';app.listen(config.port,()=>{console.log(`Listening on http://localhost:${config.port}`);});
¿Cómo mejorar el renderizado del lado del servidor?
Para hacer el renderizado del lado del servidor más dinámico, configuramos una respuesta que envíe HTML con una estructura simple. Aunque inicialmente se envía una simple etiqueta H1, sabemos que el enfoque completo debe consistir en enviar documentos HTML completos.
app.get('*',(req:Request, res:Response)=>{ res.send(`<h1>Hola, mundo con ruta: ${req.url}</h1>`);});
Recomendaciones para continuar aprendiendo
Documentación oficial de Express: Familiarízate con las funciones y middleware que ofrece esta potente biblioteca.
Profundiza en el uso de TypeScript: Mejora la tipificación de tus proyectos a través de interfaces y tipos personalizados.
Explora patrones de diseño en Node.js: Aprender patrones como MVC te ayudará a escalar tus aplicaciones rápidamente.
La creación de un servidor utilizando TypeScript y Express es solo el comienzo. ¡Sigue explorando y mejorando tus habilidades!, cada paso te llevará a un dominio mayor en el desarrollo backend.
Para los que tienen problemas con NODE_ENV El problema ocurre porque el comando NODE_ENV=development no se reconoce en sistemas Windows. En Windows, las variables de entorno no se pueden establecer de esta manera en un solo comando. Esto es común en sistemas basados en Unix como Linux y macOS.
instalen cross-env
npm install --save-dev cross-env
```modifiquen sus scripts en package.json
```js
"scripts":{"build-server":"webpack --config webpack.config.server.js","build-dev":"cross-env NODE_ENV=development npm run build-server && node --inspect dist/index.js","dev":"nodemon --ext ts --exec \"npm run build-dev\""}```"scripts":{"build-server":"webpack --config webpack.config.server.js","build-dev":"cross-env NODE\_ENV=development npm run build-server && node --inspect dist/index.js","dev":"nodemon --ext ts --exec \\"npm run build-dev\\""}
sí al utilizar la wildcard '*' se les crachea
app.get('\*',()=>{}) 
Es porque en la versión 4 de Express funcionaba ahora en la versión 5 se escribe así
app.get('/{\*splat}',()=>{}
splat es solo un nombre de ejemplo; puedes usar cualquier nombre.
.
Ahí les funcionará, un abrazo a todos
Hago tal cual lo mismo y no me reconoce la variable de entorno
Hola, a mi me paso algo similar , y me di cuenta que al importar "config" un atajo de VSCode lo importo from "dotenv" y es incorrecto. fíjate que este así ↓↓
import{ config }from"./config";
También me pasó. Lo que hice fue instalar node-env para que pudiera funcionar en windows con el siguiente comando:
npm install -g win-node-env
Por alguna razón que no he descubierto al momento de escribir este comentario, la versión 5 de Express me arrojaba un error al utilizar el wildcard '*' como primer argumento de la función get, y se resolvió pasándome a la versión 4.
yarn add express@4
Lo comparto por si le sirve a alguien. :)
Todo este tiempo pensando que Express y Node eran difíciles 🫤