Si llegan a tener un error en la instalacion de express y nodemon el problema se resuelve :
npm uninstall nodemon
y luego lo re instalamos
npm i -D nodemon
Muchas gracias realmente me fue de ayuda!
Te falto dejarme mi respectivo like compadre :v
Para los que tengan problemas con la instalacion de las dependencias:
Borrar el archivo package-lock.jsonrm package-lock.json
Borrar la carpte node_modulesrm -rf node_modules
Ejecutar npm install
excelente!, me funciono a la primera muchas gracias!
Gracias, me sirvio
Adjunto el código de la clase, con algunas modificaciones, compañeros.
const express =require(`express`);const app =express();/* GET http://localhost:3000 */app.get(`/`,(req, res)=>{ res.send(`Estoy en la ruta HOME`);});/* GET http://localhost:3000/app */app.get("/app",function(req, res, next){console.log(req.query.filtro);if(req.query.filtro){next();return;} res.send(`Estoy en la ruta APP`);});/* GET http://localhost:3000/app?filtro=JUAN */app.get("/app",function(req, res){let filtro = req.query.filtro; res.send("Get filtro: "+ filtro);});/* GET http://localhost:3000/app/1 */app.get("/app/:id",function(req, res, next){let id = req.params.id; res.send("Get id: "+ id);});app.get(`*`,(req, res)=>{ res.send(`No sé dónde estoy.`);});app.listen(3000,()=>{console.log(`Express está en escucha en el puerto 3000.`);});
Gracias. Que buena explicación.
Para devolver un Json seria:
res.json({msje:"Este es un mensaje desde Node.js"});
Muchísimas gracias, fue una ayuda imprescindible para continuar.
Un abrazo.
Muchas gracias!
Les comparto un resumen de lo explicado por Emir en la clase:
Instalación
Para poder levantar un Servidor Web utilizando el framework Express.js se debe agregar la dependencia de express al archivo package.json. Esto se hace con el siguiente comando:
npm install express --save
Creación de la instancia de Express
Una vez incluida la dependencia se debe importar el módulo y crear la instancia de express de la forma:
Definición de Rutas
El siguiente paso es la definición de rutas a las que responderá nuestro servidor web para cada petición.
Estas rutas se definen utilizando la instancia de nuestro servidor mediante la definición de verbos http (get, post, put, delete, etc) de la forma:
app.get(url,handlerFunction)donde:url=>"URL del recurso"handlerFunction=>(request, response)=>{...... response.send(data)}Ejemplo:app.get("/",(request, response)=>{ response.send("Me encuentro en la ruta Home")})
Control de Rutas no definidas
Para poder controla aquellas rutas no definidas se utiliza el wildcard * y se define de la forma:
app.get("*",(req,res)=>{ res.send("URL no valida")})
Con esto evitamos mostrarle mensajes de error no deseado a los usuarios.
**OJO: ** Express evalua las rutas de manera secuencial por lo que es importante que este wildcard se implemente al final de las rutas validas. De lo contrario podemos tener conflictos al momento de hacer las peticiones.
Inicialización del servidor
Una vez definas las rutas para nuestro servidor se debe inicializar. Para esto se ejecuta el metodo listen de la forma:
app.listen(port [, callbackFunction])donde:port=>Puerto de escucha para el servidor web
callbackFunction(opcional)=>Arrow función que se ejecuta en caso de que el servidor haya iniciado correctamente.Ejemplo:
**Nodemon**Este dependencia nos permite reiniciar nuestro servidor web cada vez que se afecte alguno de nuestros archivos del proyecto
Para instalar esta dependencia se debe agregar la depedencia al archivo **package.json** mediante el comando:
npm install nodemon --save
Una vez instalado, se debe crear un comando para la ejecución de **nodemon** dentro de la sección **scripts** del archivo **package.json** de la forma:
**Correr nuestro servidor**Para correr nuestro servidor utilizando nodemon, en la terminal se ejecuta el comando:
npm run start
Les comparto el codigo de la clase pero con la modificación de que muestre una pagina html en vez de un mensage,lo unico que cree fue los html y utilice el metodo sendFile() en lugar del metodo send(), espero les ayude de algo:
const express =require('express')const app =express()app.get("/",(req,res)=>{ res.sendFile(__dirname +'/index.html')});app.get("/app",(req,res)=>{ res.sendFile(__dirname +'/second-page.html')});app.get("*",(req,res)=>{ res.sendFile(__dirname +'/lost-page.html')});app.listen(3000,()=>{console.log("se ha iniciado el servidor con express")})```
Los métodos en el objeto de respuesta (res) de la tabla siguiente pueden enviar una respuesta al cliente y terminar el ciclo de solicitud/respuestas. Si ninguno de estos métodos se invoca desde un manejador de rutas, la solicitud de cliente se dejará colgada.
Método Descripción
res.download() Solicita un archivo para descargarlo.
res.end() Finaliza el proceso de respuesta.
res.json() Envía una respuesta JSON.
res.jsonp() Envía una respuesta JSON con soporte JSONP.
res.redirect() Redirecciona una solicitud.
res.render() Representa una plantilla de vista.
res.send() Envía una respuesta de varios tipos.
res.sendFile Envía un archivo como una secuencia de octetos.
res.sendStatus() Establece el código de estado de la respuesta y envía su representación de serie como el cuerpo de respuesta.
Express procesa las rutas en el orden en que se ponen, por tal motivo hay que tener cuidado cual sera la prioridad que se le quiera dar a las rutas
Para todo lo demas existe:
const express =require('express');const app =express();const port =3000;app.get('/',(req, res)=>{ res.send('This is the Home route')})app.get('*',(req, res)=>{ res.send('What that Hell')})app.listen(port,err=>{if(err){console.error(err); process.exit(1);}console.log(`Server listen on the ${port} port`)})
Express NPM
Nodemon NPM
Me sirvio la recomendación de ir escribiendo el codigo, asi me salian errores y demas cosas q ayudan mucho en el aprendisaje.
También puede definir el puerto con una constante y referirlo más adelante:
const port = process.env.PORT||3000;app.listen(port,()=>{console.log(`Server working at port: ${port}`);});
Excelente esa última enseñanza de como escribir una ruta por defecto
Excelente explicación, super sencillo ejecutar un servidor sin Express. Este curso está bastante completo 😍
Me sale este error, alguien sabe porque?
0 info it worked if it ends with ok
1 verbose cli ['/home/carlos/.nvm/versions/node/v8.12.0/bin/node',1 verbose cli '/home/carlos/.nvm/versions/node/v8.12.0/bin/npm',1 verbose cli 'run',1 verbose cli 'start']2 info using npm@6.4.13 info using node@v8.12.04 verbose stack Error: missing script: start
4 verbose stack at run(/home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/lib/run-script.js:155:19)4 verbose stack at /home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/lib/run-script.js:63:54 verbose stack at /home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:115:54 verbose stack at /home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:418:54 verbose stack at checkBinReferences_(/home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:373:45)4 verbose stack at final(/home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:416:3)4 verbose stack at then(/home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:160:5)4 verbose stack at /home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:364:124 verbose stack at /home/carlos/.nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:164 verbose stack at FSReqWrap.readFileAfterClose[as oncomplete](fs.js:511:3)5 verbose cwd /home/carlos/Escritorio/nodejsbasico
6 verbose Linux4.15.0-36-generic
7 verbose argv "/home/carlos/.nvm/versions/node/v8.12.0/bin/node""/home/carlos/.nvm/versions/node/v8.12.0/bin/npm""run""start"8 verbose node v8.12.09 verbose npm v6.4.110 error missing script: start
11 verbose exit [1,true]
todo estaba en el comando, el comando que debo ejecutar es npm run server
Todos los comandos personalizados que se generen en el package.json en la sección de scripts deben ejecutarse con npm run seguido de la instrucción.
const express =require("express")const app =express()app.set('port', process.env.PORT||3000)app.get('/app',(req, res)=>{ res.send('Estoy en la ruta /app')})app.get('/',(req, res)=>{ res.send('Estoy en la ruta HOME')})app.get('*',(req, res)=>{ res.send('No existe la ruta')})app.listen(app.get('port'),()=>{console.log('Server on port', app.get('port'))})```
Buen día a ejecuta el comando npm install me arroja el siguiente error:
npm ERR! tb.match is not a function
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/edith/.npm/_logs/2020-02-15T23_02_45_077Z-debug.log
estas ejecutando el npm en la ruta donde esta el node_module?
Que significa que las dependencias esten en el package.json?
Estando las dependencias en el package.json da la oportunidad a terceros de instalarlas en caso de que quieran colaborar en tu proyecto. Por eso en github vemos muchos readme con un paso como npm install para instalar los paquetes necesarios.