Compartilhar via


Escolha a versão de Node.js certa para o Azure

Ao desenvolver aplicativos JavaScript para o Azure, é crucial alinhar as versões do Node.js em seu ambiente de desenvolvimento local e no ambiente de runtime do host. Esse alinhamento de versão garante a compatibilidade, reduz a probabilidade de erros de runtime e usa os recursos completos da plataforma do Azure. Neste artigo, você aprenderá a selecionar a versão Node.js apropriada para seus aplicativos e serviços hospedados no Azure.

Versões do Node.js

O Node.js segue um cronograma de lançamento previsível que inclui versões de Suporte de Longo Prazo (LTS) e atuais. As versões lts são designadas para manutenção e estabilidade de longo prazo, tornando-as ideais para ambientes de produção. Essas versões recebem correções críticas de bugs, atualizações de segurança e melhorias de desempenho por um período estendido, normalmente 30 meses. Node.js usa um sistema de numeração par/ímpar para distinguir entre versões LTS e atuais: versões com numeração par (por exemplo, 18, 20) são versões LTS, enquanto versões com numeração ímpar (por exemplo, 19, 21) são versões atuais. As versões atuais incluem os recursos e melhorias mais recentes, mas só têm suporte por seis meses. Após esse período, elas passam para uma versão LTS se forem de número par.

Você não deve usar as versões atuais na produção porque a janela de seis meses pode se desalinhar com os tempos de execução e SDKs da plataforma de hospedagem do Azure. Você vai perceber que os containers de desenvolvimento para Node.js não oferecem versões ímpares/atuais.

Pré-requisitos

Todos os SDKS e serviços de hospedagem do Azure usam versões LTS do Node.js. Se o código do aplicativo estiver em execução em uma versão anterior do Node.js, não estiver mais disponível para LTS (Suporte de Longo Prazo), você deverá atualizar o código-fonte do aplicativo para ser executado em um runtime do LTS.

Você também deve saber em qual serviço de hospedagem pretende implantar e em todos os serviços do Azure que seu aplicativo implantado usa.

Compatibilidade entre ambientes

Depois de saber quais serviços e SDKs do Azure seu aplicativo usa, verifique se todos os ambientes do aplicativo podem criar e executar a mesma versão do Node.js:

  • ambiente de desenvolvimento local ou contêiner de desenvolvimento
  • Ambiente de processo de CI/CD
  • Runtime do host do aplicativo
  • Azure SDKs

Para obter uma explicação dos problemas relacionados ao uso de diferentes versões em seu ambiente, consulte problemas de compatibilidade.

Serviços de hospedagem

Ao usar os serviços de hospedagem do Azure, você pode selecionar implantar um contêiner no host ou selecionar uma versão Node.js como o runtime do host. Em ambos os casos, você precisa alinhar a versão do runtime, o código do aplicativo e as dependências, como os SDKs do Azure.

Para localizar informações de runtime, use a seguinte tabela:

Serviço

Informações da versão

Para runtimes do Linux. Você também pode executar o seguinte comando da CLI do Azure para ver todas as versões com suporte.

az webapp list-runtimes | grep node

Novos projetos devem usar o modelo de programação mais recente.

Há dois runtimes diferentes a serem considerados: o front-end e a API se você estiver hospedando sua API em Aplicativos Web Estáticos.

A CLI da SWA fornece funcionalidade de ambiente de desenvolvimento, incluindo proxy, autenticação e outras configurações.

Azure SDKs

Os SDKs do Azure exigem versões Node.js LTS, conforme indicado na política de suporte do . Pode haver um breve período em que as versões LTS suportadas pelo ambiente de hospedagem e os SDKs não correspondem, pois é necessário tempo para verificar novas versões Node.js LTS. Como geralmente há três versões de Node.js marcadas como versões de suporte de longo prazo, você geralmente pode direcionar a versão intermediária. Este objetivo permite que você tenha algum tempo para testar e verificar se seu aplicativo pode passar para a próxima versão LTS.

Gerenciar várias versões do Node.js

Quando você precisa gerenciar mais de uma versão do Node.js em seus ambientes locais e remotos, recomendamos:

  • Contêineres de Desenvolvimento: utilize um contêiner com uma versão específica de Node.js. Você pode gerenciar a versão do Node.js em vários ambientes usando contêineres. A extensão Remoto - Contêineres do Visual Studio Code simplifica o uso de contêineres.
  • NVM (Node Version Manager): uma interface de linha de comando para definir ou alternar sua versão local do Node.js.

Baixar e instalar Node.js com base no uso pretendido

Você pode baixar e instalar Node.js com base em seus requisitos.

Problemas de compatibilidade

Aqui estão algumas categorias comuns de problemas de compatibilidade que podem surgir quando as versões de Node.js não são compatíveis nos ambientes:

  • vulnerabilidades de segurança: usar uma versão desatualizada com vulnerabilidades de segurança conhecidas pode expor seu aplicativo a riscos de segurança.

  • erros de sintaxe: aplicativos que usam a sintaxe JavaScript mais recente, sem suporte de versões de Node.js mais antigas, podem causar erros de sintaxe. Esses erros impedem a execução do aplicativo.

  • APIs preteridas: APIs preteridas em versões mais recentes Node.js ainda poderão estar presentes em versões mais antigas, levando a comportamentos inesperados ou erros de runtime se as versões não estiverem alinhadas.

  • Degradação de Desempenho: versões mais recentes de Node.js geralmente incluem melhorias de desempenho. Executar seu aplicativo em uma versão mais antiga pode resultar em tempos de execução mais lentos e desempenho reduzido.

  • Comportamento Inconsistente: Diferenças em como as versões Node.js lidam com certas operações, como o gerenciamento de buffer, o comportamento do loop de eventos ou a resolução de módulos, podem levar a um comportamento inconsistente entre ambientes.

  • Conflitos de dependência: os módulos ou pacotes do Node.js que são compatíveis com uma versão do Node.js podem não ser compatíveis com outra, causando conflitos de dependência e erros de runtime.

  • Falhas de build: os pipelines de CI/CD que usam uma versão do Node.js diferente do ambiente de desenvolvimento local podem levar a falhas de build, causando atrasos no processo de desenvolvimento e lançamento.

Ao garantir que todos os ambientes usem a mesma versão do Node.js, você pode atenuar esses problemas de compatibilidade e garantir um processo de desenvolvimento e implantação mais suaves.