# 5 Node

Podemos entrar a la web oficial de Node (opens new window)
Podemos entrar a la web oficial de NPM (opens new window)

# ¿Qué es Node?

Aviso

# Enlaces utiles

En esta seccion pondremos enlaces utiles:

Notas de los proyectos

#

Importante: "Two" significa que lo hice yo mismo

# Apuntes varios

En esta seccion pondremos apuntes varios:

# Instalamos Node

Instalamos Node (opens new window) desde su web
También podemos ver las Versiones de Node (opens new window)

node -v
npm -v

# Instalamos Node en Laragon

Instalamos Node (opens new window) desde su web

Notas

  • Los apuntes anteriores hacen referencia a instalar Node con su ejecutable msi desde su web
  • Los apuntes de esta sección hacen referencia a descargar la versión en formato zip de Node desde su web, para instalarlo como binario en Laragon, para esto debemos:
  1. Ir a la siguiente ruta:
    Actualizar la versión de Node.js en Laragon (opens new window)
  2. Una vez realizada la instalación de Node.js en Laragon agregar la ruta al PATH de Windows.
  3. Para agregar Node.js al PATH de Windows, siga estos pasos:
    1. Abra el menú Inicio y busque Variables de entorno y seleccione Editar las variables de entorno del sistema.
    2. En la pestaña Opciones avanzadas, haga clic en Variables de entorno.
    3. En la sección Variables del sistema, busque la variable Path y haga clic en Editar.
    4. Haga clic en Nuevo y agregue la ruta de instalación de Node.js (por ejemplo, C:\Program Files\nodejs). ---- En nuestro caso seria D:\PORTABLES\laragon\bin\nodejs\node-v12.11.1-win-x64.
    5. Haga clic en Aceptar para guardar los cambios.

# Modulos instalados

# Para poder ver los modulos instalados (Esto se aplica a las secciones Node, Angular y React)
npm list     # Localmente en un repositorio
npm list -g  # Globalmente

# Ubicación de los modulos instalados

# Para poder ver la ubicacion de los modulos instalados (Esto se aplica a las secciones Node, Angular y React)
# Los paquetes de Node se instalan mediante npm, el gestor de paquetes de Node.
# Los paquetes instalados globalmente, en sistemas Unix o Linux, se instalan en la carpeta /usr/local/lib/node_modules/, mientras que en Windows se instalan en C:\Users\<user>\AppData\Roaming\npm\node_modules.
# Los paquetes instalados localmente, se instalan en la carpeta node_modules en la raíz del proyecto.
npm root     # Localmente en un repositorio
npm root -g  # Globalmente

# Ubicacion de los archivos ejecutables

# Verificar ubicacion de los archivos ejecutables en las variables de entorno PATH del sistema
where node  # Comando Windows, obtiene todas las rutas disponibles del PATH, ordenadas
which node  # Comando Linux, obtiene solo la primera ruta del PATH que encuentra, comentar que en el PATH la primera ruta disponible es la que se ejecuta

where npm
which npm

where ng
which ng

# Otros
where php
which php

where laravel
which laravel

where python
which python

where vuepress
which vuepress

where create-react-app
which create-react-app

where mongod
which mongod

# 3-api-rest-node-two (master-fullstack)

Notas de la instalación

  • Cuando cree este proyecto lo hice con Node 18.14.0 instala NPM 9.3.1
npm init -y                 # Crear package.json de forma predeterminada
npm init      				# Crear package.json y nos permite personalizarlo en consola
node index o node index.js  # Estos comandos se utilizan para ejecutar el archivo index.js (o cualquier otro archivo de JavaScript específico) en Node.js. Este comando es útil cuando se desea ejecutar un archivo JavaScript que no es una aplicación completa, sino que puede ser una biblioteca o un módulo específico.
npm start      				# De este modo también levantamos un proyecto en React. Este comando se utiliza para iniciar la aplicación principal de tu proyecto, definida en el archivo package.json. Este comando es útil para automatizar la tarea de iniciar la aplicación y manejar las variables de entorno necesarias.
npm run start  				# Este comando también inicia la aplicación principal de tu proyecto, pero permite ejecutar cualquier otro script personalizado definido en el archivo package.json. Por ejemplo, si tienes un script personalizado llamado start-dev, puedes ejecutarlo con el comando npm run start-dev.

# Dependencias
	Las dependencias siempre estan instaladas en packgage.json del proyecto

	npm i          # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm install    # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm update     # Actualizar las dependencias que ya tenga, pero ademas instalara las dependencias que faltan
	npm update -g  # Actualiza todos las dependencias globales

	npm install --save-dev nodemon  # Instalamos nodemon como dependencia de desarrollo, --save para indicarle que sea dependencia del proyecto y -dev para indicarle que sea dependencia de desarrollo
	npm i bcrypt                    # Instalamos bcrypt                ----> Para hashear contraseñar
	npm i body-parser               # Instalamos body-parser           ----> Se encarga de recibir una peticion HTTP normal, se encarga tomar toda esa información, la informacion del body y convertirla a JSON
	npm i connect-multiparty        # Instalamos connect-multiparty    ----> Permite subir archivos al backend
	npm i express                   # Instalamos express               ----> Framework que funciona sobre NodeJS, que se encarga de todas las peticiones HTTP, framework backend que se encarga de hacerlo todo, si queremos hacer una API o una aplicacion completa con Node, necesitamos Express
	npm i jwt-simple                # Instalamos jwt-simple            ----> Nos permite generar Token y decodificar Token
	npm i moment                    # Instalamos moment                ----> Procesar fechas, limpiarlas, darle un formato concreto, etc
	npm i mongoose                  # Instalamos mongoose              ----> Es un ORM, una herramienta de modelado de objetos, diseñada para trabajar con MongoDB
	npm i mongoose-paginate-v2      # Instalamos mongoose-paginate-v2  ----> Paginacion con mongoose
	npm i validator                 # Instalamos validator             ----> Validar datos, validar email, string, numero, cosas asi

# 7-backend-nodejs-two (master-javascript)

Notas de la instalación

  • Cuando cree este proyecto lo hice con Node 18.14.0 instala NPM 9.3.1
npm init -y                 # Crear package.json de forma predeterminada
npm init      				# Crear package.json y nos permite personalizarlo en consola
node index o node index.js  # Estos comandos se utilizan para ejecutar el archivo index.js (o cualquier otro archivo de JavaScript específico) en Node.js. Este comando es útil cuando se desea ejecutar un archivo JavaScript que no es una aplicación completa, sino que puede ser una biblioteca o un módulo específico.
npm start      				# De este modo también levantamos un proyecto en React. Este comando se utiliza para iniciar la aplicación principal de tu proyecto, definida en el archivo package.json. Este comando es útil para automatizar la tarea de iniciar la aplicación y manejar las variables de entorno necesarias.
npm run start  				# Este comando también inicia la aplicación principal de tu proyecto, pero permite ejecutar cualquier otro script personalizado definido en el archivo package.json. Por ejemplo, si tienes un script personalizado llamado start-dev, puedes ejecutarlo con el comando npm run start-dev.

# Dependencias
	Las dependencias siempre estan instaladas en packgage.json del proyecto

	npm i          # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm install    # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm update     # Actualizar las dependencias que ya tenga, pero ademas instalara las dependencias que faltan
	npm update -g  # Actualiza todos las dependencias globales

	npm install --save-dev nodemon  # Instalamos nodemon como dependencia de desarrollo, --save para indicarle que sea dependencia del proyecto y -dev para indicarle que sea dependencia de desarrollo
	npm i body-parser               # Instalamos body-parser        ----> Se encarga de recibir una peticion HTTP normal, se encarga tomar toda esa información, la informacion del body y convertirla a JSON
	npm i connect-multiparty        # Instalamos connect-multiparty ----> Permite subir archivos al backend
	npm i express                   # Instalamos express            ----> Framework que funciona sobre NodeJS, que se encarga de todas las peticiones HTTP, framework backend que se encarga de hacerlo todo, si queremos hacer una API o una aplicacion completa con Node, necesitamos Express
	npm i mongoose                  # Instalamos mongoose           ----> Es un ORM, una herramienta de modelado de objetos, diseñada para trabajar con MongoDB

# seccion-08-node (master-frameworks-javascript)

Notas de la instalación

  • Cuando cree este proyecto lo hice con Node 18.14.0 instala NPM 9.3.1
npm init -y                 # Crear package.json de forma predeterminada
npm init      				# Crear package.json y nos permite personalizarlo en consola
node index o node index.js  # Estos comandos se utilizan para ejecutar el archivo index.js (o cualquier otro archivo de JavaScript específico) en Node.js. Este comando es útil cuando se desea ejecutar un archivo JavaScript que no es una aplicación completa, sino que puede ser una biblioteca o un módulo específico.
npm start      				# De este modo también levantamos un proyecto en React. Este comando se utiliza para iniciar la aplicación principal de tu proyecto, definida en el archivo package.json. Este comando es útil para automatizar la tarea de iniciar la aplicación y manejar las variables de entorno necesarias.
npm run start  				# Este comando también inicia la aplicación principal de tu proyecto, pero permite ejecutar cualquier otro script personalizado definido en el archivo package.json. Por ejemplo, si tienes un script personalizado llamado start-dev, puedes ejecutarlo con el comando npm run start-dev.

# Dependencias
	Las dependencias siempre estan instaladas en packgage.json del proyecto

	npm i          # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm install    # Puedes recuperar node_modules y package-lock.json con el archivo package.json
	npm update     # Actualizar las dependencias que ya tenga, pero ademas instalara las dependencias que faltan
	npm update -g  # Actualiza todos las dependencias globales

	npm install --save-dev nodemon  # Instalamos nodemon como dependencia de desarrollo, --save para indicarle que sea dependencia del proyecto y -dev para indicarle que sea dependencia de desarrollo
	npm i body-parser               # Instalamos body-parser        ----> Se encarga de recibir una peticion HTTP normal, se encarga tomar toda esa información, la informacion del body y convertirla a JSON
	npm i connect-multiparty        # Instalamos connect-multiparty ----> Permite subir archivos al backend
	npm i express                   # Instalamos express            ----> Framework que funciona sobre NodeJS, que se encarga de todas las peticiones HTTP, framework backend que se encarga de hacerlo todo, si queremos hacer una API o una aplicacion completa con Node, necesitamos Express
	npm i mongoose                  # Instalamos mongoose           ----> Es un ORM, una herramienta de modelado de objetos, diseñada para trabajar con MongoDB
	npm i validator                 # Instalamos validator          ----> Validar datos, validar email, string, numero, cosas asi

# Cambios de versión de Node

En esta seccion pondremos cambios de versión de Node:

# Node 8.9.4 a Node 18.14.0 (7-backend-nodejs-two)

# Node 10.16.0 a Node 18.14.0 (3-api-rest-node-two, seccion-08-node)

Notas
  1. Cuando realice este cambio ocurrio el error

    [MONGODB DRIVER] Warning: Current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
    
    1. Busque el error, me llevo a esta pagina
      • https://stackoverflow.com/questions/57895175/server-discovery-and-monitoring-engine-is-deprecated
  2. Cuando realice este cambio ocurrio el error

    MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    
    1. Busque el error, me llevo a esta pagina
      • https://stackoverflow.com/questions/46523321/mongoerror-connect-econnrefused-127-0-0-127017
  3. Cuando realice este cambio ocurrio el error (Error al guardar, Cambio de versión de Mongoose 6 a Mongoose 7)

    throw new MongooseError('Model.prototype.save() no longer accepts a callback') MongooseError: Model.prototype.save() no longer accepts a callback
    
    1. Busque el error, me llevo a esta pagina
      • https://ed.team/comunidad/error-al-guardar