node debuggingnode debugnode nodemon
jolugama.com

NodeJs - primeros pasos - Creación proyecto, nodemon, debugging, peticiones http, paso de argumentos...

Publicado: por

Tutorial de NodeJs, mediante la creación de un proyecto de Node, uso de Nodemon para refresco de los script/servidor, colores por consola, paso de argumentos, peticiones Http, y debuggear de una forma fácil y cómoda.

Puedes ver los ejercicios de node en github.com/jolugama/nodejs-ejemplos

nodejs.org/es/docs

Accedemos al api según version de node que estés usando. Accede para usar métodos, clases y bibliotecas sin hacer ningun npm install

Package.json

Para cualquier proyecto node, se requiere siempre de la creación del package.json. Se puede construir manualmente o por comandos.

$ npm init

Package.json administra el proyecto, guardando toda dependencia, tan solo con hacer un npm install se descargaría todas las librerías.

Nodemon

Herramienta que monitoriza cualquier cambio de tu código y recarga el archivo llamado.

https://nodemon.io/

Instalación:

$ npm install -g nodemon
$ nodemon -v

ej: nodemon saluda.js Al modificar 'saluda' se volvería a reiniciar el código de ese archivo.

o en el caso de que lo queramos importar en el proyecto

$ npm install nodemon --save-dev

Importar y exportar archivo

Para no trabajar en un archivo toda la app. En este caso se crea una función 'mostrarAnimal', y luego se exporta mediante module.exports.

Exportar

mostrarAnimal = (color) => {
    switch (color) {
        case 'rojo':
            console.log('🦀 🦞 🦐 🦜 🐙');
            break;
        case 'verde':
            console.log('🐸 🐊 🐢 🦎 🐍 🐲 🐉 🦕 🦖');
            break;
        case 'azul':
            console.log('🐳🐋🐬🐟🦈');
            break;
        default:
            console.log('🦓 🦌 🐮 🐷 🐗 🐘 🦏 🦛 🐹 🐰 🐿')
            break;
    }
}

module.exports = {
    mostrarAnimal
}

Importar

Tan fácil como poner 'require' con la ruta del archivo.


// importa archivo
const animales= require ('./01/animales');

// importa colores
var colors = require('colors');

// recupera primer argumento: node 01.saludaColores.js verde
// primer argumento es node (0)
// segundo argumento es el archivo llamado (1)
const argumento = process.argv[2];

console.log(`Argumento: ${argumento}`.bgYellow.red);
animales.mostrarAnimal(argumento);

Shebang - (#!)

#!/usr/bin/env node

Mediante esta linea, colocado al principio de un archivo node que queramos ejecutar, nos ahorramos tener que indicar node. Es decir, en vez de node miArchivo.js, ejecutariamos miArchivo.js. Es solo para entornos unix, y antes de su ejecución se debe dar los derechos de ejecucion: chmod +x miArchivo.js.

Colores de consola

La consola no tiene por qué ser tan aburrida, podemos darle un poco de color a los errores, mensajes, menus de scripts, ayuda…

  • Puedes cambiar colores de forma nativa
console.log('\x1b[36m%s\x1b[0m', 'I am cyan');  //cyan
console.log('\x1b[33m%s\x1b[0m', stringToMakeYellow);  //yellow


// Colores:

Reset = "\x1b[0m"
Bright = "\x1b[1m"
Dim = "\x1b[2m"
Underscore = "\x1b[4m"
Blink = "\x1b[5m"
Reverse = "\x1b[7m"
Hidden = "\x1b[8m"

FgBlack = "\x1b[30m"
FgRed = "\x1b[31m"
FgGreen = "\x1b[32m"
FgYellow = "\x1b[33m"
FgBlue = "\x1b[34m"
FgMagenta = "\x1b[35m"
FgCyan = "\x1b[36m"
FgWhite = "\x1b[37m"

BgBlack = "\x1b[40m"
BgRed = "\x1b[41m"
BgGreen = "\x1b[42m"
BgYellow = "\x1b[43m"
BgBlue = "\x1b[44m"
BgMagenta = "\x1b[45m"
BgCyan = "\x1b[46m"
BgWhite = "\x1b[47m"
  • O con libería: Realmente hay muchas liberías que te puedes descargar. Esta es una de ellas.
npm install colors --save
// En fondo amarillo, letras rojas
console.log(`argumento: ${argumento}`.bgYellow.red); 

Paso de argumentos

  • Se puede usar process.argv de forma nativa:
// obtención del primer parámetro
const argumento = process.argv[2];

// obtención de todos los parámetros
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

  • Yargs, mediante biblioteca Ayuda a crear herramientas de línea de comandos interactivas al analizar los argumentos y generar una interfaz de usuario elegante.
$ npm install yargs --save

let args = require('yargs')
    .option('desde', {
        alias: 'd',
        default: 1
    })
    .option('hasta', {
        alias: 'h',
        default: 10
    })
    .option('salto', {
        alias: 's',
        default: 1
    })
    .argv

let desde = args.desde
let hasta = args.hasta
let salto = args.salto

console.log('yargs:',args);
for (let i = desde; i <= hasta; i += salto) {
    console.log(i);
}

Otro ejemplo de yargs, lee un archivo e indica las lineas que tiene

var argv = require('yargs')
    .usage('Uso: $0 <command> [options]')
    .command('count', 'Cuenta las lineas de un archivo')
    .example('$0 count -f foo.js', 'cuenta las lineas del archivo dado')
    .alias('f', 'file')
    .nargs('f', 1)
    .describe('f', 'Load a file')
    .demandOption(['f'])
    .help('h')
    .alias('h', 'help')
    .epilog('Cogido de: https://github.com/yargs/yargs/blob/master/docs/examples.md')
    .argv;

var fs = require('fs');
var s = fs.createReadStream(argv.file);

var lines = 0;
s.on('data', function (buf) {
    lines += buf.toString().match(/\n/g).length;
});

s.on('end', function () {
    console.log(lines);
});

Peticiones Http

Hay dos bibliotecas muy populares:

  • axios–> usa promesas https://www.npmjs.com/package/axios
$ npm install axios --save
const axios = require('axios');

// 1ª forma, por promesa
axios.get(`url`)
    .then(res=>{

    })
    .catch(e=> console.log('error',e));


// 2ª forma, por async await

const miFunction = async (url) => {
    const resp = await axios.get(`https://loripsum.net/api/2/short/headers`)

    const resp2 = await axios.get(`https://loripsum.net/api/2/short/headers`)
    if (resp.status === 200 && resp2.status === 200) {
        return `

        ${resp.data}

        ;) **********

        ${resp2.data}

    `
    }
}


miFunction().then((r, e) => {
    console.log(r)
})


  • request –> usa callback https://www.npmjs.com/package/request

Debugging node

Hay varias maneras. Mis preferidas son estas:

  • Visual Studio Code, pulsas f5, se abre el modo debugging. Puedes parar en varias lineas concretas usando breakpoints. Pincha a la izquierda del número de linea.

  • chrome: En linea pon node --inspect-brk miScript.js, en chrome, chrome://inspect pulsa donde ponga inspect.

 
... y finalmente... Si te ha gustado, difúndelo. Es solo un momento. escríbe algo en comentarios 😉 Gracias.