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:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

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 ‘now’ usar ‘vercel’

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 [email protected]!

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:

{
“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”
}
}

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

Después de mucho esfuerzo https://jrubilar-node-api.now.sh/api/movies

Seguimos aprendiendo 😄
https://asismelgarejo-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 “build”: “movies-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 {“errorType”:“MongoError”,“errorMessage”:“MongoClient must be connected before calling MongoClient.prototype.db”,“name”:“MongoError”,“stack”:[“MongoError: 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’t 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.0
�  Inspect: 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!! 😃

😐😥😣