Esto es con el fin de tener lo indispensable para poder levantar un proceso en un servidor que contenga un código que requiere de algunos módulos.
Paso 1 – Instalar NodeJS en linux
Yo uso linux, el procedimiento está es esta página.
Con esto se instala NodeJS y npm. Luego de corroborar que se hayan instalado correctamente verificando las versiones, pasamos al siguiente paso.
Paso 2 – Crear la carpeta del proyecto
Esta carpeta se crea como cualquier otra en donde quieras. Yo las estoy creando en un directorio que he destinado para colocar todas estas carpetas, Server, de proyectos que serán manejadas por el servidor. Macedonia dentro del directorio Server.
Paso 3 – Crear el archivo package.json
Esto se hace por medio de la terminal con el comando npm init. Este comando, como el resto de comandos específicos para un proyecto determinado, se ejecutan desde el directorio específico de ese proyecto o desarrollo. En mi caso me traslado al directorio macedonia dentro del directorio Server.
brigzen@brigzen-ASUS:~$
brigzen@brigzen-ASUS:~$ ls
Code Desktop Documents Downloads Dropbox fastboot Music Pictures Public Server snap Templates Videos
brigzen@brigzen-ASUS:~$ cd Server
brigzen@brigzen-ASUS:~/Server$ ls
macedonia
brigzen@brigzen-ASUS:~/Server$ cd macedonia
brigzen@brigzen-ASUS:~/Server/macedonia$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (macedonia)
version: (1.0.0)
description: Primer proyecto para arbitraje de criptomonedas en diferenes exchanges.
entry point: (index.js)
test command:
git repository:
keywords:
author: Brigzen Coronado
license: (ISC)
About to write to /home/brigzen/Server/macedonia/package.json:
{
"name": "macedonia",
"version": "1.0.0",
"description": "Primer proyecto para arbitraje de criptomonedas en diferentes exchanges.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Brigzen Coronado",
"license": "ISC"
}
Is this OK? (yes)
brigzen@brigzen-ASUS:~/Server/macedonia$
El texto dentro del archivo package.json:
{
"name": "macedonia",
"version": "1.0.0",
"description": "Primer proyecto para arbitraje de criptomonedas en diferenes exchanges.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Brigzen Coronado",
"license": "ISC",
}
Dependencias
En Node.js, la utilidad en si no tiene muchas funcionalidades, las dependencias son códigos extras que proporcionan las funcionalidades de Node.js, incluso, por lo que puedo ver, hasta las funcionalidades más básicas. Se suele distinguir entre dependencias de producción y de desarrollo.
De Producción
Las primeras se usarán siempre en el funcionamiento de lo que se está haciendo, es decir, son parte del desarrollo. Para instalarlas se usa el comando: npm install dependencia.
De Desarrollo
Las segundas son dependencias que solo serán útiles mientras se esté trabajando en el desarrollo del proyecto. Para instalarlas se usa el comando: npm install –save-dev dependencia.
Paso 4 – Express, la primera dependencia a instalar
Según el tutorial, la primera dependencia a instalar es Express. Esta dependencia es un módulo que instala el código para que se ejecute el servidor. Según el instructor, es análogo a lo que sería Apache para PHP.
Para ello se ejecuta el comando: npm install express. También puede ser: npm i express.
brigzen@brigzen-ASUS:~/Server/macedonia$ npm install express
added 57 packages, and audited 58 packages in 3s
7 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
brigzen@brigzen-ASUS:~/Server/macedonia$
Luego de ello la dependencia aparece listada en el archivo package.json. También se crea un archivo llamado package-lock.json que no se toca. Finalmente también crea un directorio llamado node_module, que es donde se va a instalar archivos y directorios que Express o cualquier módulo npm necesite.
{
"name": "macedonia",
"version": "1.0.0",
"description": "Primer proyecto para arbitraje de criptomonedas en diferenes exchanges.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Brigzen Coronado",
"license": "ISC",
"dependencies": {
"express": "^4.18.1"
}
}

Nodemon
Esta es una dependencia de desarrollo que nos permite reiniciar el servidor cuando hagamos cambios.
Se usa npm install –save-dev nodemon.
{
"name": "macedonia",
"version": "1.0.0",
"description": "Primer proyecto para arbitraje de criptomonedas en diferentes exchanges.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Brigzen Coronado",
"license": "ISC",
"dependencies": {
"express": "^4.18.1",
},
"devDependencies": {
"nodemon": "^2.0.16"
}
}
Paso 5 – Crear el archivo index.js
Este es el archivo donde se va a configurar el servidor Express para correr determinada aplicación. Este archivo está especificado en el código del archivo package.json en el objeto main.

Llamar las dependencias
Lo de abajo es el código inicial que se usó en el curso. Se llama al módulo express con require (más adelante se explica un detalle en esta parte). Se crea una variable con ese módulo en modo de función, algo no muy bien entendido.
Definición de puerto
Se define un puerto que por los momentos va a ser 4000 ya que es en producción cuando tome un puerto específico. Pero sea cual sea el puerto con el que salga una vez en producción, el mismo quedará guardado en la variable port.
Método .listen
Luego a esa solicitud se le aplica un método .listen para arrancar el servidor. El código inicial va quedando así como se ve abajo, pero ahora se puede usar el import en vez de require. Por lo que de abajo no es el código definitivo.
const express = require('express');
const app = express();
//Definir puerto
const port = process.env.PORT || 4000;
app.listen( () => {
console.log(`El servidor está funcionando en el puerto ${port}`);
})
Nueva sintaxis para incorporar las dependencias
En un principio hicimos requerimiento de las dependencias usando, por ejemplo, const express = require(‘express’);. Esto incluso está así en algunos códigos de ejemplo para conexiones API. Pero ahora el instructor indica que esto es una herencia de una forma no correcta de hacerlo que terminó adoptándose. Pero que la forma correcta, que es con import ya la tenemos incorporada y que debería ser la correcta.
import express from 'express';
Paso 6 – Código inicial en el archivo index.js
Lo de abajo es un ejemplo del código inicial del archivo index.js de mi proyecto inicial donde se observa que:
- Llamo a las dependencias de producción con import.
- Creo la variable de la función express() para hacer uso de métodos del servidor.
- Guardo el puerto en una variable o si no es el caso le he asignado el 4000
- He creado el método .listen de express.
import express from 'express';
const app = express();
const port = process.env.PORT || 4000;
app.listen( port, () => console.log(`El servidor está funcionando en el puerto ${port}`));
El método .listen(), en un momento lo eliminé a ver qué pasaba, pero efectivamente el script dejó de funcionar, es por ello que lo coloco como algo indispensable. Pero que luego debería de saber más sobre ello.
Paso 7 – Ajustes del archivo package.json
Hay que indicar en el archivo package.json que estamos usando módulos para el tema de los imports y que por medio de la dependencia nodemon, que script vamos a arrancar.
type: module
Se debe incluir “type”: “module” en el objeto de script en el archivo package.json para que se puedan exportar las dependencias. Lo más probable es que en el futuro no sea necesario este último paso pero por los momentos hay que colocar esa bandera para poder usar los imports.
dev: nodemon index.js
Este código es el que reconoce el sistema para ejecutar cuando se arranca al servidor. En este caso cuando el servidor arranque, lo que hace es ejecutar el código en index.js. Con la ayuda de la dependencia de nodemon, este archivo se va a ejecutar cada vez que se modifique el archivo.
{
"name": "agenciaviajesnode",
"version": "1.0.0",
"description": "Proyecto del curso de JavaScript",
"main": "index.js",
"scripts": {
"dev": "nodemon index.js"
},
"type": "module",
"author": "Brigzen Coronado",
"license": "ISC",
"dependencies": {
"express": "^4.18.1"
},
"devDependencies": {
"nodemon": "^2.0.16"
}
}
Enrutamiento
Aquí vamos a definir el enrutamiento de las diferentes url.
Paso 8 – Crear archivo index.js en un directorio para las rutas
Es recomendable que las url, así se use una sola vista, estén colocadas en un archivo aparte y a su vez en un directorio aparte. Para ello se crea un directorio, preferencia de nombre routes y dentro, un archivo index.js.

Paso 9 – Código en el archivo index.js del directorio routes
Lo siguiente es un ejemplo del código dentro del archivo de las rutas.
import express from 'express';
const router = express.Router();
router.get('/', (req, res) => {
res.render('inicio');
});
router.get('/nosotros', (req, res) => {
res.render('nosotros');
});
export default router;
- Llamamos el módulo dependencia servidor (como lo quieras llamar) con import.
- Creamos las rutas con esa instancia con el método .get.
- Exportamos la instancia router con export.
- Importamos router en el archivo de configuración principal index.js.
- Y finalmente le decimos en el mismo index.js que para determinar todas las rutas use router para ello. Esto se hace colocando el código app.use(‘/’, router); en el index.js.
import express from 'express';
import router from './routes/index.js'
const app = express();
const port = process.env.PORT || 4000;
app.use('/', router);
app.listen(port);
El template Engine
Esto es para poder mostrar código html y css.
Paso 10 – Instalar el engine PUG
Se instala PUG normalmente como ya se ha aprendido a hacer mediante linea de comandos en la terminal. Es conveniente que antes de instalar una nueva dependencia, detener el servidor y luego de instalada, volverlo a arrancar.
Paso 11 – Configurar PUG en el servidor
Esto se hace agregando el código app.set(‘view engine’, ‘pug’); en el archivo index.js.
import express from 'express';
import router from './routes/index.js'
const app = express();
const port = process.env.PORT || 4000;
app.use('/', router);
app.set('view engine', 'pug');
app.listen(port);
Paso 12 – Archivos .pug
Crear un directorio que puede ser llamado views. Y allí se colocan las diferentes vistas html. Pero usando archivos .pug.

Llamar el script y arrancar el servidor
Finalmente se usa una terminal para llamar el script anterior para que arranque el servidor. Esto se hace con el comando npm run dev. Claro está, desde la carpeta donde está la instalación.
brigzen@brigzen-ASUS:~/Server/macedonia$ npm run dev
> macedonia@1.0.0 dev
> nodemon index.js
[nodemon] 2.0.16
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node index.js`
El servidor está funcionando en el puerto 4000
Lo anterior ejecuta cualquier script especificado en package.json, en este caso parece que le estamos diciendo el que está especificado por dev.
Para detener el servidor se usa Ctrl + C.