Contenido

Conociendo mejor el proceso de Node.js

Node.js te facilita el acceso a un objeto global denominado processque proporciona información relativa al proceso de Node.js actualmente en ejecución. Este objeto extiende de EventEmitter por lo que podrás escuchar ciertos eventos en el caso de interesarte.

Eventos a considerar

Existen dos tipos de eventos que son emitidos por el proceso; Eventos de excepción y eventos de señal.

Eventos de excepción

Los eventos de excepción más comunes y que podrás ver con mayor facilidad son:

  • uncaughtException: Este evento se emite cuando se produce una excepción no capturada durante la ejecución de la aplicación.
  • unhandleRejectionError: Este evento se emite cuando una promesa es rechazada y no se captura el error.

Debes tener en cuenta lo siguiente:

  1. Cuando estos eventos se emiten la aplicación queda totalmente bloqueada y se recomienda finalizar el proceso process.exit() y reiniciar la aplicación por completo.
  2. La función controladora del evento debe utilizarse para mostrar un log de la traza del error y realizar una salida elegante. Es decir, desasignar recursos que puedan quedar bloqueados.
  3. Nunca debes lanzar una excepción dentro de una función controladora, ya que nunca se capturará.

Eventos de señal

Los eventos de señal se emiten cuando el proceso de Node.js recibe eventos de tipo POSIX. Estos eventos POSIX son eventos que proceden del Sistema Operativo. Los más importantes que debes conocer son:

  • SIGTERM: Esta señal se envía al proceso de Node.js para solicitar su terminación, lo que permite al proceso el cierre de la aplicación de forma “elegante”
  • SIGUSR1 y SIGURS2: Según el estándar POSIX, estos eventos tienen la característica de ser utilizados por el usuario con las condiciones que el usuario define. Node.js utiliza estos eventos de señal para iniciar el debugger.

Aunque hay muchos otros que quizás te sean interesantes conocer para el futuro.

Métodos y propiedades expuestas en el process.

  • process.cwd(): Método que devuelve un string con el directorio de trabajo actual para el proceso en ejecución.
  • process.env: Esta propiedad contiene un objeto qeu contiene las variables de entorno del usuario.
  • process.exit(n): Método que finaliza el proceso de Node.js sincronamente con un código de estado de salida. Debés tener en cuenta que obliga al proceso a salir lo mas rápido posible obviando la ejecución de operaciones asíncronas y hay posibilidad de perdida de información.
  • process.kill(pid, [signal]): Con este método puedes enviar cualquier señal POSIX a cualquier proceso del Sistema Operativo.