¿Qué es stacktrace y cómo imprimir en node.js?

Node.js es un proyecto de código abierto que se puede usar para secuencias de comandos del lado del servidor. Node.js es una plataforma cruzada que permite a los desarrolladores codificar sin tener que preocuparse por el entorno de tiempo de ejecución. Node.js se usa ampliamente para crear aplicaciones web dinámicas, ligeras y escalables. Node.js proporciona un entorno de tiempo de ejecución de JavaScript que se puede usar tanto para el desarrollo de front-end como de back-end. Sin embargo, las aplicaciones a menudo arrojan errores o excepciones que deben manejarse.

La JVM muestra automáticamente un seguimiento de la pila para indicar que se ha producido un error durante la ejecución del programa. El seguimiento de pila se utiliza para rastrear los marcos de pila activos en una instancia particular durante la ejecución de un programa. El seguimiento de la pila es útil durante la depuración del código, ya que muestra el punto exacto que ha causado un error. Los errores en Node.js se pueden clasificar en cuatro amplias categorías:

  • Errores estándar de JavaScript
  • Errores del sistema
  • Errores especificados por el usuario
  • Errores de afirmación

Node.js admite varios mecanismos para propagar y manejar errores que ocurren durante la ejecución del programa. Todos los errores estándar de JavaScript se manejan de inmediato al generar un error que se puede ver en el seguimiento de la pila.

Hay cuatro métodos para imprimir el seguimiento de la pila en Node.js que son:

  • Uso de la propiedad error.stack: la propiedad error.stack describe el punto en el código en el que se instancia el error.

    Sintaxis:

    error.stack

    Ejemplo:

    console.log("This program demonstrates "
                + "stack trace in Node.js");
    var err = new Error().stack
    console.log(err);

    Producción:

    This program demonstrates stack trace in Node.js
    Error
        at Object. (/home/cg/root/2523129/main.js:20:11)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10)
        at run (bootstrap_node.js:389:7)
        at startup (bootstrap_node.js:149:9)
        at bootstrap_node.js:504:3
    
  • Uso del método Error.captureStackTrace(): este método crea una propiedad .stack en obj que devuelve una string que representa el punto del código en el que se llamó a Error.captureStackTrace(obj). El parámetro func representa una función que es opcional.

    Sintaxis:
    Error.captureStackTrace(obj, func)

    Ejemplo:

    const obj = {};
    Error.captureStackTrace(obj);
    console.log(obj.stack);
      
    // Alternatively
    function MyNewError() {
        Error.captureStackTrace(this, MyNewError);
    }
      
    console.log(new MyNewError().stack);

    Producción:

    Error
        at Object. (/home/cg/root/2523129/main.js:25:13)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10)
        at run (bootstrap_node.js:389:7)
        at startup (bootstrap_node.js:149:9)
        at bootstrap_node.js:504:3
    
  • Uso del bloque try-catch: es un mecanismo de manejo de errores y se usa cuando una pieza de código está rodeada por un bloque try y arroja un error al bloque catch. Si no se maneja el error, el programa termina abruptamente.

    Ejemplo:

    try {
        throw new Error("Error occurred");  
    }
    catch(e) {
        console.log(e);
    }

    Producción:

    Error
        at Object. (/home/cg/root/2523129/main.js:25:13)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10)
        at run (bootstrap_node.js:389:7)
        at startup (bootstrap_node.js:149:9)
        at bootstrap_node.js:504:3
    
  • Uso del comando de rastreo: el método console.trace() se usa para mostrar el rastreo que representa cómo terminó el código en un punto determinado.

    Ejemplo:

    console.trace("hello world");

    Producción:

    Trace: hello world
        at Object. (/home/cg/root/2523129/main.js:28:9)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10)
        at run (bootstrap_node.js:389:7)
        at startup (bootstrap_node.js:149:9)
        at bootstrap_node.js:504:3
    

Publicación traducida automáticamente

Artículo escrito por Shreyasi_Chakraborty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *