Hace unos días se lanzó la nueva y esperadísima versión 4.0.0 de Node.js que ofrece novedades muy interesantes y añade estabilidad a la plataforma.
Sobre todo en bibliotecas reutilizables (módulos), en ocasiones puede ser interesante averiguar la versión exacta de Node.js en la que se está ejecutando tu código de modo que puedas hacer uso de algunas características o no en función de la versión actual. Vamos a ver cómo puedes averiguarlo.
En primer lugar vamos a ver cómo puedes ver qué versión de Node.js tienes instalada en tu máquina. La forma más sencilla es abrir la línea de comandos y utilizar el propio ejecutable node.exe con el parámetro "-v", así:
En esta imagen vemos lo que devuelven la nueva versión 4.0.0 y una más antigua (la 0.12.2 que viene con las herramientas de Apache Cordova de Visual Studio, que es del 31 de marzo ¡muchos cambios desde entonces!
Vale, esto está bien pero realmente lo que necesitamos es poder averiguar esta información desde nuestro código, y a ser posible de manera mucho más detallada. Por ejemplo, ¿qué versión del motor V8 de JavaScript tenemos disponible?.
La respuesta está en la clase process que representa al proceso de ejecución actual.
Abre el terminal REPL de Node.js y hagamos unas pruebas con esta clase.
Para ello busca este icono en tu menú de inicio (en los programas instalados):
y ejecútalo. El REPL (Read-Eval-Print Loop, o bucle de lectura, evaluación e impresión) no es más que una línea de comandos o shell interactivo que está a la espera de comandos (Read) que le podemos enviar y que entonces ejecuta (Eval) contra el motor de Node.js en este caso, y muestra sus resultados (Print) por pantalla. Esto nos permite escribir código JavaScript de pruebas contra Node.js sin tener que escribir un programa completo. Esto es ideal para hacer pruebas sencillas de todo tipo.
La clase process tiene una propiedad version que nos devuelve el mismo dato sobre la versión que obteníamos desde la línea de comandos anterior:
Con esto solo hemos ganado el saber la versión de Node.js desde el código, pero realmente pocos detalles tenemos.
Por ello es mucho mejor utilizar el objeto versions que expone tantas propiedades como informaciones de versión tiene Node.js sobre sus componentes:
Con éste, como vemos, tenemos acceso a las versiones de diferentes elementos del producto, que varían de una versión a otra (en la imagen tengo primero la versión 0.12.2 que viene con Visual Studio y la última versión 4.0.0 recién aparecida).
Como vemos podemos averiguar las versiones del producto (node), del motor de procesamiento de JavaScript (V8), del componente libuv que realiza entrada/salida asíncrona en el que se fundamenta el trabajo de Node.js (uv), la biblioteca de comresión (zlib), etc... Solo mira todos los parches que se han incorporado entre OpenSSL 1.1 y 1.02 y verás lo importante que es mantener todo esto actualizado.
De este modo, si queremos ver la versión exacta de, por ejemplo, el motor V8, es tan sencillo como usar process.versions.v8:
¡Espero que te sea útil!