Compartir a través de


Elección de la versión de Node.js adecuada para Azure

Al desarrollar aplicaciones de JavaScript para Azure, es fundamental alinear las versiones de Node.js en el entorno de desarrollo local y en el entorno en tiempo de ejecución del host. Esta alineación de versiones garantiza la compatibilidad, reduce la probabilidad de errores en tiempo de ejecución y usa las funcionalidades completas de la plataforma Azure. En este artículo, aprenderá a seleccionar la versión de Node.js adecuada para las aplicaciones y servicios hospedados en Azure.

Versiones de Node.js

Node.js sigue una programación de versiones predecible que incluye tanto Soporte a Largo Plazo (LTS) como las versiones actuales. Las versiones LTS se designan para mantenimiento y estabilidad a largo plazo, lo que las convierte en ideales para entornos de producción. Estas versiones reciben correcciones de errores críticas, actualizaciones de seguridad y mejoras de rendimiento durante un período prolongado, normalmente 30 meses. Node.js usa un sistema de numeración par/impar para distinguir entre las versiones LTS y Current: las versiones con números pares (por ejemplo, 18, 20) son versiones LTS, mientras que las versiones impares (por ejemplo, 19, 21) son versiones actuales. Las versiones actuales incluyen las características y mejoras más recientes, pero solo se admiten durante seis meses, después de lo cual pasan a una versión LTS si están numeradas uniformemente.

No debe usar versiones actuales en producción porque la ventana de seis meses puede desalinear los entornos de ejecución y los SDK de la plataforma de hospedaje de Azure. Observará que los contenedores de desarrollo para Node.js no ofrecen versiones impares o actuales.

Prerrequisitos

Todos los servicios de hospedaje y los SDK de Azure usan las versiones LTS de Node.js. Si el código de la aplicación se ha ejecutado en una versión anterior de Node.js, ya no está disponible para la compatibilidad a largo plazo (LTS), debe actualizar el código fuente de la aplicación para que se ejecute en un entorno de ejecución de LTS.

También debe saber en qué servicio de hospedaje quiere implementar y en todos los servicios de Azure que usa la aplicación implementada.

Compatibilidad entre entornos

Una vez que sepa qué servicios y SDK de Azure usa la aplicación, asegúrese de que todos los entornos de la aplicación pueden compilar y ejecutar la misma versión de Node.js:

  • entorno de desarrollo local o contenedor de desarrollo
  • Entorno del proceso de CI/CD
  • Tiempo de ejecución del host de la aplicación
  • SDK de Azure

Para obtener una explicación de los problemas relacionados con el uso de versiones diferentes en todo el entorno, consulte problemas de compatibilidad.

Servicios de hospedaje

Al usar los servicios de hospedaje de Azure, puede seleccionar implementar un contenedor en el host o seleccionar una versión de Node.js como el entorno de ejecución del host. En ambos casos, debe alinear la versión del entorno de ejecución, el código de la aplicación y las dependencias, como los SDK de Azure.

Para buscar información en tiempo de ejecución, use la tabla siguiente:

Servicio

Información de versión

Para entornos de ejecución de Linux. También puede ejecutar el siguiente comando de la CLI de Azure para ver todas las versiones admitidas.

az webapp list-runtimes | grep node

Los nuevos proyectos deben usar el modelo de programación más reciente.

Azure Static Web Apps (SWA)

Hay dos entornos de ejecución diferentes que se deben tener en cuenta: el front-end y la API si hospeda la API en Static Web Apps.

La CLI de SWA proporciona funcionalidad de entorno de desarrollo, como proxy, autenticación y otras configuraciones.

SDK de Azure

Los SDK de Azure requieren versiones LTS de Node.js, según lo indicado en la directiva de compatibilidad. Puede haber un breve período en el que las versiones LTS compatibles con el entorno de hospedaje y los SDK no coinciden, ya que se tarda en comprobar las nuevas versiones de Node.js LTS. Dado que normalmente hay tres versiones de Node.js marcadas como versiones de soporte técnico a largo plazo, normalmente puede tener como destino la versión intermedia. Este objetivo te permite disponer de algo de tiempo para probar y verificar que tu aplicación puede pasar a la siguiente versión LTS.

Administrar varias versiones de Node.js

Cuando necesite administrar más de una versión de Node.js en los entornos locales y remotos, se recomienda:

  • Contenedores de desarrollo: use un contenedor con una versión específica de Node.js. Puede administrar la versión de Node.js en varios entornos mediante contenedores. La extensión Contenedores remotos de Visual Studio Code simplifica este proceso.
  • NVM (Administrador de versiones del nodo): una interfaz de línea de comandos para establecer o cambiar la versión local de Node.js.

Descargar e instalar Node.js en función del uso previsto

Puede descargar e instalar Node.js en función de sus requisitos.

Problemas de compatibilidad

Estas son algunas categorías comunes de problemas de compatibilidad que pueden surgir cuando las versiones de Node.js no coinciden entre entornos:

  • vulnerabilidades de seguridad: el uso de una versión obsoleta con vulnerabilidades de seguridad conocidas puede exponer la aplicación a riesgos de seguridad.

  • Errores de sintaxis: las aplicaciones que usan la sintaxis de JavaScript más reciente, no compatibles con versiones anteriores de Node.js, pueden provocar errores de sintaxis. Estos errores impiden que la aplicación se ejecute.

  • API en desuso: las API que están en desuso en versiones de Node.js más recientes pueden estar presentes en versiones anteriores, lo que provoca errores inesperados de comportamiento o tiempo de ejecución si las versiones no están alineadas.

  • degradación del rendimiento: las versiones más recientes de Node.js suelen incluir mejoras en el rendimiento. La ejecución de la aplicación en una versión anterior puede provocar tiempos de ejecución más lentos y un rendimiento reducido.

  • Comportamiento inconsistente: Las diferencias en cómo las versiones Node.js manejan ciertas operaciones, como la gestión de búferes, el comportamiento del bucle de eventos o la resolución de módulos, pueden llevar a un comportamiento inconsistente entre diferentes entornos.

  • Conflictos de dependencia: los módulos o paquetes de Node.js compatibles con una versión de Node.js pueden no ser compatibles con otra, lo que provoca conflictos de dependencia y errores en tiempo de ejecución.

  • errores de compilación: las canalizaciones de CI/CD que usan una versión de Node.js diferente a la del entorno de desarrollo local pueden provocar errores de compilación, lo que provoca retrasos en el proceso de desarrollo y versión.

Al asegurarse de que todos los entornos usan la misma versión de Node.js, puede mitigar estos problemas de compatibilidad y garantizar un proceso de desarrollo e implementación más sencillo.