Tu primera experiencia con Node.js

1

驴D贸nde aprender backend con Node.js actualizado?

2

Todo lo que aprender谩s sobre backend con Node.js

3

驴Qu茅 es Node.js?

4

驴Qu茅 es Node.js y para qu茅 sirve?

5

Diferencias entre Node.js y JavaScript

6

Resumen: Diferencias Nodejs y Javascript

7

Instalaci贸n de Node.js

8

Arquitectura orientada a eventos

9

Node.js para la web

Manejo y uso de Streams con Node.js

10

Introducci贸n a streams

11

Readable y Writable streams

12

Duplex y Transforms streams

Uso de utilidades de Node.js

13

Sistema operativo y sistema de archivos

14

Administrar directorios y archivos

15

Consola, utilidades y debugging

16

Clusters y procesos hijos

Crea tu primer proyecto en Express.js

17

驴Qu茅 es Express.js y para qu茅 sirve?

18

Creando tu primer servidor con Express.js

19

Request y Response Objects

Aprende a crear un API con REST

20

Anatom铆a de una API Restful

21

Estructura de una pel铆cula con Moockaru

22

Implementando un CRUD en Express.js

23

M茅todos idempotentes del CRUD

24

Implementando una capa de servicios

C贸mo conectarse con librer铆as externas en Express.js

25

Creaci贸n de una BD en MongoAtlas

26

Conexi贸n a MongoAtlas una instancia de MongoDB

27

Conexi贸n con Robot3T y MongoDB Compass a una BD

28

Implementaci贸n de las acciones de MongoDB

29

Conexi贸n de nuestros servicios con MongoDB

Conoce como funcionan los Middleware en Express.js

30

驴Qu茅 es un middleware? Capa de manejo de errores usando un middleware

31

Manejo de errores as铆ncronos y s铆ncronos en Express

32

Capa de validaci贸n de datos usando un middleware

33

驴Qu茅 es Joi y Boom?

34

Implementando Boom

35

Implementando Joi

36

Probar la validaci贸n de nuestros endpoints

37

Middlewares populares en Express.js

Implementa tests en Node.js

38

Creaci贸n de tests para nuestros endpoints

39

Creaci贸n de tests para nuestros servicios

40

Creaci贸n de tests para nuestras utilidades

41

Agregando un comando para coverage

42

Debugging e inspect

Despliega tu primera aplicaci贸n en Express.js

43

Considerando las mejores pr谩cticas para el despliegue

44

Variables de entorno, CORS y HTTPS

45

驴C贸mo implementar una capa de manejo de cach茅?

46

驴C贸mo contener tu aplicaci贸n en Docker?

47

Despliegue en Now

Conclusiones

48

驴Qu茅 aprendiste en este curso?

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Despliegue en Now

47/48
Recursos

Now es una plataforma en constante actualizaci贸n, si te llega a pasar un mensaje de error relacionado con Express, intenta esto:

En el archivo now.json cambia

"builds": [{ "src": "index.js", "use": "@now/node" }]

por

"builds": [{ "src": "index.js", "use": "@now/node-server" }]

Aportes 81

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Parece que ahora Now se llama Vercel, as铆 que les dejo los pasos que segu铆 para hacer mi despliegue:

  • Instalar vercel globalmente: npm i -g vercel
  • A帽adir las variables de entorno para conectarse a la bd de mongo a la lista de variables secretas de vercel:
vercel secrets add platzivideos-db-user ...
vercel secrets add platzivideos-db-password ...
vercel secrets add platzivideos-db-host ...
vercel secrets add platzivideos-db-name ...
  • En vez de los ... se deben colocar las variables de entorno respectivas (las mismas del archivo .env).
  • Talvez necesites crear una cuenta en Vercel ya que te pedir谩 un email cuando hagas esto.
  • Para ver las variables secretas guardadas (no se ven los valores): vercel secrets ls
  • Ahora a帽adimos un archivo vercel.json en la ra铆z del proyecto con el siguiente contenido:
{
  "name": "platzivideo",
  "version": 2,
  "builds": [
    {
      "src": "index.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/index.js"
    }
  ],
  "env": {
    "DB_USER": "@platzivideos-db-user",
    "DB_PASSWORD": "@platzivideos-db-password",
    "DB_HOST": "@platzivideos-db-host",
    "DB_NAME": "@platzivideos-db-name"
  }
}
  • Antes de desplegar podemos probar la app con vercel dev. Una vez ejecutado este comando se nos preguntar谩n algunas cosas que podemos responder por defecto (dando enter y enter). Al final la aplicaci贸n quedar谩 desplegada como si estuviera en producci贸n pero localmente.
  • Si todo anda bien, hacemos el despliegue: vercel. El proceso tardar谩 unos segundo y cuando finalice se mostrar谩 la URL del proyecto ya desplegado.

Para configurar una URL m谩s amigable: vercel alias <url_actual> <alias>

hola! oigan鈥 al llegar a este curso, revisen que su conexi贸n a MongoDB est茅 abierta y que cualquier IP se pueda conectar. Por que si no la dejan abierta en esta ocasi贸n, su deploy fallar谩 y zeit/now les dar谩 un error 502 cuando intenten entrar a su ruta de /api/movies o como en proyecto que ten铆a /api/hotels .

Me tard茅 2 d铆as en encontrar mi error鈥 entonces, no cometan el mismo error que yo. 馃槂

Sean felices.

Para no tener que agregar las variables una por una, pueden escribir las todas y unirlas usando &&

Ejemplo:

now secret add platzi-videos-db-user **su_usuario** &&
now secret add platzi-videos-db-password **su_password** &&
now secret add platzi-videos-db-host **su_host** &&
now secret add platzi-videos-db-name **nombre_db**

Listo, reto hecho. Como lo dice @Rodrigo, ahora Now se llama Vercel.

Primero deben instalar vercel a trav茅s de Node.js

npm i -g vercel

Basta solo cambiar los comandos del Shell. En lugar de usar 鈥榥ow鈥 usar 鈥榲ercel鈥

Mi URL:
https://platzivideo-apialv.now.sh/

https://video-flix1-git-master.nscando.vercel.app/api/movies

despu茅s de haber casi terminado la escuela de JS, reci茅n hoy pude resolver este tema del despliegue en now.

Me volv铆 loco, por varios motivos, primero que hyper y VS Code no me reconoc铆an el comando de **vercel ** ni el comando now.
me devolvian lo siguiente:

zsh: command not found: vercel
zsh: command not found: now

lo que a mi me funcion贸 es lo siguiente:

  • hacer el deploy directamente desde la pagina de vercel , por intermedio del repositorio de github, el repositorio tiene que estar actualizado y tiene que tener el archivo vercel.json.

el codigo de mi vercel.json quedo as铆.

{
  "name": "videoflix",
  "version": 2,
  "builds": [{ "src": "index.js", "use": "@vercel/node" }],
  "routes": [{ "src": "/(.*)", "dest": "/index.js" }]
}

no tienen que declarar las variables del archivo .env en el archivo vercel.json, esto lo hacen directamente cuando configuran todo desde la pag de vercel.

pueden guiarse tambi茅n por el comentario de este compa帽ero que me fue de ayuda tambi茅n.
https://platzi.com/comentario/1754849/

Hola a tod@s!

Los que tengan dudas por el cambio a vercel les recomiendo hagan lo siguiente.

  1. creen el archivo vercel.json a la altura de su index.js

debe quedar asi:

{
  "name": "movies-daniel",
  "version": 2,
  "builds": [
    { "src": "index.js", "use": "@vercel/node" }
  ],
  "routes": [
    { "src": "/.*", "dest": "index.js"}
    
  ]
}
  1. subanlo a git
  2. entren a vercel y registrense
  3. creen una nueva app, siguen los pasos y colocan el link de su repo de github
  4. antes de darle deploy les saldran 2 opciones una de ella dice: AGREGAR VARIABLES DE ENTORNO , las agregan
    5.1. van a su archivo .env, y colocal CLAVE y VALOR en vercel (deben agregar las 4 variables)
  5. le dan deploy y deberia estar funcionando

(Me sirvio a mi, espero les sirva)

Tuve que agregar en el package.json en la secci贸n de scripts, al instrucci贸n "build": "movies-api build", para que me permitiera desplegar, pero al final se pudo, genial lo que se aprende cada dia 馃槃

https://platzivideo.devfko.now.sh/api/movies/

no me di贸 ning煤n error , pero al tratar de accederla tengo este error. no responde

Subida a Vercel (antiguo Now)
https://movies-api.esgueva.now.sh/api/movies

Adjunto mi now.json

{
  "version": 2,
  "builds": [
    {
      "src": "index.js",
      "use": "@now/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/index.js",
      "methods": ["POST", "GET", "PUT", "DELETE"],
      "headers": {
        "Access-Control-Allow-Origin": "_",
        "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept",
        "Access-Control-Allow-Credentials": "true"
      }
    }
  ],
  "env": {
    "DB_USER": "@movies-db-user",
    "DB_PASS": "@movies-db-pass",
    "DB_HOST": "@movies-db-host",
    "DB_NAME": "@movies-db-name"
  }
}

Now es un servicio serverless, eso quiere decir que no debemos preocuparnos por la insfrastructura, ya que NOW se encarga de escalar la aplicaci贸n por nosotros and de optimizar nuestro codigo.

Es una de las mas simples para hacer despliegue.


Parece que ahora Now se llama Vercel, as铆 que les dejo los pasos que segu铆 para hacer mi despliegue:

Instalar vercel globalmente: npm i -g vercel
En vez de los 鈥 se deben colocar las variables de entorno respectivas (las mismas del archivo .env).
Talvez necesites crear una cuenta en Vercel ya que te pedir谩 un email cuando hagas esto.
Para ver las variables secretas guardadas (no se ven los valores): vercel secrets ls
Ahora a帽adimos un archivo vercel.json en la ra铆z del proyecto con el siguiente contenido:

{
鈥渘ame鈥: 鈥減latzivideo鈥,
鈥渧ersion鈥: 2,
鈥渂uilds鈥: [
{
鈥渟rc鈥: 鈥渋ndex.js鈥,
鈥渦se鈥: 鈥淍vercel/node鈥
}
],
鈥渞outes鈥: [
{
鈥渟rc鈥: 鈥/(.*)鈥,
鈥渄est鈥: 鈥/index.js鈥
}
],
鈥渆nv鈥: {
鈥淒B_USER鈥: 鈥淍platzivideos-db-user鈥,
鈥淒B_PASSWORD鈥: 鈥淍platzivideos-db-password鈥,
鈥淒B_HOST鈥: 鈥淍platzivideos-db-host鈥,
鈥淒B_NAME鈥: 鈥淍platzivideos-db-name鈥
}
}

Aca mi deploy 馃槃 , que genial !! 馃槂

https://es-shoes-api.vercel.app/api/clients

Si anteriormente metimos nuestra app dentro de un contenedor docker porque hacemos un deploy directo? cu谩l fue la ganancia el contenedor?

https://movies-api.panaloco.vercel.app/api/movies

Estuvo divertido, XD y se logr贸.

Esta es la URL de mi despliegue:
https://movies-api-tureke.now.sh/api/movies

Reto cumplido
馃懆鈥嶐煉火煈忦煆冣嶁檧锔
https://platzilive-api.now.sh/api/movies

Reto cumplido. Logr茅 desplegar la aplicaci贸n en Vercel.

Estuvieron claras las explicaciones del profesor, aunque antes tuve que crear una cuenta en Vercel.

https://platzivideo-javvapi.now.sh/api/movies

Now es ahora Vercel, todo continua funcionando igual pero a pesar de que la aplicaci贸n parece que se deploye correctamente a la hora de acceder a la url /api/movies no me funciona correctamente.

Lo he probado directemente en vercel y tambi茅n con vercel localmente con el comando npx vercel dev.

Tarde en poder instalar VERCEL con este comando lo solucion茅:

sudo npm install -g vercel --unsafe-perm

Esto es Ubuntu 20.04

Esta parte merece actualizada pues zeit ahora es vercel

Necesito que actualicen este curso, es el peor que he hecho en Platzi hasta ahora. El profesor no explica nada bien y encima ya han pasado unos a帽itos

Deploy en vercel 2021

Este comentario explica muy bien como realizar el deploy
https://platzi.com/comentario/1754849/

My first deploy 馃挭馃挌

https://platzivideo-scobarich.vercel.app/api/movies

Les dejo mi archivo de configuraci贸n en Vercel
Por si a alguien m谩s le pasa cuando tienen una estructura con /src/index.js y las rutas en /src/routes/index.js鈥 routes debe apuntar a /src/index.js y no al archivo de rutas鈥 me llev茅 varios d铆as en darme cuenta 馃槮

{
  "name": "store",
  "version": 2,
  "builds": [
    {
      "src": "/src/index.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/src/index.js"
    }
  ],
  "env": {
    "DB_USER": "@db_user",
    "DB_PASSWORD": "@db_password",
    "DB_HOST": "@db_host",
    "DB_NAME": "@db_name"
  }
}

Uf, finalmente lo pude subir a Heroku. Vercel por alg煤n motivo no me uploadeaba el proyecto al server desde el VERCEL-CLI鈥 Se quedaba en 0% la loading bar y no pasaba nada. Lo intent茅 hacer desde la p谩gina, migrando desde GitHub, pero ah铆 no me lo buildeaba.

Heroku me pareci贸 bastante mejor documentado y straightforward.

Yo he subido la aplicaci贸n a Heroku.
Esta es
https://blooming-beach-91591.herokuapp.com/api/movies

tengo el siguiente error al lanzar el comando now

Error! Environment Variable "DB_USER" references Secret "platzivideos-db-user", which does not exist.

ya revise las variables de entorno y si existe, de hecho en desarrollo si me funciona.

Genial, platzi es increible mi primer deploy de una app
https://platzivideo.massimokris.now.sh/

ya no me aparece la opci贸n desktop app, intente con la CLI pero me manda el siguiente error

zsh: command not found: now

https://andrew-api.now.sh/api/movies
Excelente mi primer despliegue 馃槃

En el sitio creado por el profesor no funcionan las b煤squedas de movies espec铆ficas
.
https://platzivideos-api.now.sh/api/movies/5da146a186b754378cca7265

ademas de que me sale que el alias no esta asignado sale esto en vercel, antes llamado now鈥 alguien me puede ayudar鈥
![](

les agradecer铆a.

Esta vivo鈥 Muajjajajaja

https://platzivideos.now.sh/api/movies

Me surgi贸 una duda.
Mi despliegue en Now funciona bien, pero si pasan unas 2 o 3 horas y entro de nuevo a api/movies me regresa siempre un error 500. Para arreglarlo debo entrar al repositorio y ejecutar now o now --prod

驴Eso a qu茅 puede deberse?

Despliegue de la aplicaci贸n

https://gustavo-api.now.sh/api/movies

Me dio el siguiente error

鈿 now dev
Now CLI 17.1.1 dev (beta) 鈥 https://zeit.co/feedback
Error! Your `package.json` file is missing a `build` property inside the `scripts` property.
More details: https://zeit.co/docs/v2/platform/frequently-asked-questions#missing-build-script

y lo solucione con esto 鈥渂uild鈥: 鈥渕ovies-api build --output public鈥

en los scripts de package.json

"scripts": {
    "dev": "DEBUG=app:* nodemon index",
    "start": "NODE_ENV=production node index",
    "test": "mocha --exit",
    "build": "movies-api build --output public"
  },

M谩s info https://zeit.co/docs/v2/platform/frequently-asked-questions#missing-build-script

Aqu铆 esta el reto me gusto me record贸 now.sh mucho a heroku

https://platzivideo.miguelangelmp.now.sh/api/movies

Buenas noches, espero que se encuentren bien.
Realice el deploy sin embargo cuando voy acceder a la ruta me da el siguiente error:
Connected succesfully to mongo
2020-04-25T23:14:14.367Z a7aaa939-691e-4f17-845c-d86c0d172bca ERROR Uncaught Exception {鈥渆rrorType鈥:鈥淢ongoError鈥,鈥渆rrorMessage鈥:鈥淢ongoClient must be connected before calling MongoClient.prototype.db鈥,鈥渘ame鈥:鈥淢ongoError鈥,鈥渟tack鈥:[鈥淢ongoError: MongoClient must be connected before calling MongoClient.prototype.db鈥," at MongoClient.db (/var/task/node_modules/mongodb/lib/mongo_client.js:306:11)"," at /var/task/lib/mongo.js:27:31"," at /var/task/node_modules/mongodb/lib/utils.js:722:9"," at /var/task/node_modules/mongodb/lib/mongo_client.js:216:23"," at /var/task/node_modules/mongodb/lib/operations/connect.js:274:21"," at parseSrvConnectionString (/var/task/node_modules/mongodb/lib/core/uri_parser.js:41:12)"," at parseConnectionString (/var/task/node_modules/mongodb/lib/core/uri_parser.js:556:12)"," at connect (/var/task/node_modules/mongodb/lib/operations/connect.js:272:3)"," at /var/task/node_modules/mongodb/lib/mongo_client.js:215:5"," at maybePromise (/var/task/node_modules/mongodb/lib/utils.js:719:3)"]}
Unknown application error occurred

Sugerencias? Profe?

Por fin salio lo logr茅 desplegar lo sub铆a a heroku muy f谩cil en subir ah铆.
Les comparto el enlace Heroku

Buenas noches!, cuando pongo:

VERCEL DEV 鈥 me aparece el siguiente error:

Error! Your codebase isn鈥檛 linked to a project on Vercel. Run vercel to link it.

Quien puede ayudarme por favor asi sigo avanzando?, gracias!.

https://platzivideo-a1ap77gat.vercel.app/api/movies

Reto cumplido. Toco investigar porque todo cambia en pocos meses que fue desarrollado.

Aqu铆 al profe se le olvido mencionar que necesitas registrarte en: vercel.com para poder usar esta herramienta.

Tambi茅n si no quieren instalar la versi贸n de escritorio: npm i -g now.

Bastante confuso, se necesita actualizar.

Por fin!!!
Desplegado!!!
Dos d铆as buscando un error en app, y solo era que estaba usando fs para morgan.
https://platzivideo-three.now.sh/api/movies

compa帽eros alguien me puede ayudar鈥

<alejo@DESKTOP-08S9QRN MINGW64 /e/Alejandro Morales S谩nchez/Documentos Universidad/Curso de Backend con Node.js - Platzi/backend-Node.JS/movies-api
$ vercel
Vercel CLI 19.2.0Inspect: https://vercel.com/alejomstdea/movies-api/dklfv8u0u [3s]
Error! Alias could not get assigned.>

no se que pasa all铆 馃槮

En esta clase no ocultan la contrase帽a de la base de datos como en otros videos.

Y como se hace el despliqgue en un servidor que no sea Now ni Heroku, donde solo tengo el Sistema Operativo Linux (Ubuntu 18.06)

App desplegada en Heroku, muy sencillo!

Ac谩 se encuentra la documentaci贸n de como construir el archivo vercel.json
https://vercel.com/docs/configuration#introduction/configuration-reference

Bueno curso, aunque frecuentemente no era suficiente con la explicaci贸n, no hay nada que no se pudiese sacar adelante con la ayuda de la comunidad y un poco de documentaci贸n 馃槃

Aqu铆 mi despliegue: https://movis-api.vercel.app/

Para los que quieran saber como hacerle deploy a Heroku pueden ver este video 馃敟 https://www.youtube.com/watch?v=gPOa0LvIwHQ

alguien mas se fijo que en el primer video difumin贸 la contrase帽a y en este lo deja as铆 jaja

now es ahora Vercel

Aseguraos de hacer deploy con CORS, para que nadie pueda entrar con postman y subiros data.
Nose si cobrar por datos almacenados cuando se alcanza un limite pero prevenir es mejor que curar. Saludos

Alguien tiene idea de como hacer el deploy con AWS?

Gracias!! 馃槂

馃槓馃槬馃槪