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",
}
Paso 4Instalar 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.
Express, la primera dependencia a instalar
La primera dependencia a instalar es Express. Esta dependencia es un módulo que instala el código para que se ejecute el servidor. 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. (Son dos guiones antes de «save», mirar el ejemplo de abajo).
brigzen@Brigzens-Air TipsAdministration % npm install --save-dev nodemon
added 34 packages, and audited 93 packages in 1s
11 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
{
"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.

Paso 6 – Editar type: module en el archivo package.json
Editar el archivo package.json incluyendo la propiedad : valor «type»: «module» en el objeto 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.
{
"name": "agenciaviajesnode",
"version": "1.0.0",
"description": "Proyecto del curso de JavaScript",
"main": "index.js",
"scripts": {
"dev": "nodemon index.js"
},
"type": "module", //Por default es commonJS, pero ya module es la forma nativa
"author": "Brigzen Coronado",
"license": "ISC",
"dependencies": {
"express": "^4.18.1"
},
"devDependencies": {
"nodemon": "^2.0.16"
}
}
Paso 7 – Código inicial en el archivo index.js
Llamar a las dependencias de producción con import
import express from 'express';
Creo una instancia de la función express() para hacer uso de métodos del servidor.
const app = express();
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.
const port = process.env.PORT || 4000;
Arranco el servidor con el método .listen a la variable de la función express().
app.listen( port, () => console.log(`El servidor está funcionando en el puerto ${port}`));
El código inicial queda así como se ve abajo.
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}`));
Paso 8 – 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 9 – 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 10 – 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 11 – 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.
npm install pug
brigzen@Brigzens-Air TipsAdministration % npm install pug
added 39 packages, and audited 132 packages in 3s
16 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
Paso 12 – 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 13 – Archivos .pug
Crear un directorio que puede ser llamado views. Y allí se colocan las diferentes vistas html. Pero usando archivos .pug.

Paso 14 – 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.
Modo viejo de llamar a las dependencias
Abajo el código inicial del archivo «index.js». Se puede observar que se está llamando al módulo express con require. Esto ya no se hace así pero lo ejemplifico por aquí por si es necesario tener esto claro.
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 ya hay una forma nativa para Javascript que es con import.
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}`);
})