Escolha a versão 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 tempo de execução do host. Esse alinhamento de versão garante a compatibilidade, reduz a probabilidade de erros de tempo de execução e usa todos os recursos da plataforma Azure. Neste artigo, você aprenderá a selecionar a versão Node.js apropriada para seus aplicativos e serviços hospedados no Azure.
Node.js versões
Node.js segue um cronograma de lançamento previsível que inclui o Suporte de Longo Prazo (LTS) e as versões atuais. As versões LTS são designadas para manutenção e estabilidade a longo prazo, tornando-as ideais para ambientes de produção. Essas versões recebem correções de bugs críticos, atualizações de segurança e melhorias de desempenho por um período prolongado, geralmente 30 meses. Node.js usa um sistema de numeração par/ímpar para distinguir entre LTS e versões atuais: versões pares (por exemplo, 18, 20) são versões LTS, enquanto versões ímpares (por exemplo, 19, 21) são versões atuais. As versões atuais incluem os recursos e melhorias mais recentes, mas são suportadas apenas por seis meses, após os quais eles fazem a transição para uma versão LTS se forem pares.
Você não deve usar as versões atuais em produção porque a janela de seis meses pode se alinhar incorretamente com os SDKs e os tempos de execução da plataforma de hospedagem do Azure. Você notará que os contêineres de desenvolvimento para Node.js não oferecem versões ímpares/atuais.
Pré-requisitos
Todos os SDKs do Azure e todos os serviços de hospedagem usam versões LTS do Node.js. Se o código do seu aplicativo tiver sido executado em uma versão anterior do Node.js, não mais disponível para Suporte de Longo Prazo (LTS), você deverá atualizar o código-fonte do aplicativo para ser executado em um tempo de execução LTS.
Você também deve saber em qual serviço de hospedagem você pretende implantar e quaisquer 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, certifique-se de que todos os ambientes para o aplicativo possam criar e executar a mesma versão do Node.js:
- ambiente de desenvolvimento local ou contentor de desenvolvimento
- Ambiente de processo CI/CD
- Tempo de execução do host do aplicativo
- Azure SDKs
Para obter uma explicação dos problemas relacionados ao uso de versões diferentes em seu ambiente, consulte Problemas de compatibilidade.
Serviços de alojamento
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 tempo de execução para o host. Em ambos os casos, você precisa alinhar a versão do tempo de execução, o código do aplicativo e as dependências, como os SDKs do Azure.
Para localizar informações de tempo de execução, use a tabela a seguir:
Serviço
Informações sobre a versão
Para ambientes de execução Linux. Você também pode executar o seguinte comando da CLI do Azure para ver todas as versões suportadas.
az webapp list-runtimes | grep node
Os novos projetos devem utilizar o modelo de programação mais recente.
Há dois tempos de execução diferentes a serem considerados: o front-end e a API se você estiver hospedando sua API em Static Web Apps.
A SWA CLI fornece funcionalidade de ambiente de desenvolvimento, incluindo proxy, autenticação e outras configurações.
Azure SDKs
Os SDK do Azure exigem versões Node.js LTS, como 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 coincidam, pois leva tempo para verificar novas versões Node.js LTS. Como geralmente há três versões do Node.js marcadas como versões de Suporte de Longo Prazo, você geralmente pode direcionar a versão intermediária. Esse destino 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: Use um contêiner com uma versão Node.js específica. Você pode gerenciar a versão do Node.js em vários ambientes usando contêineres. A extensão Remote - Containers do Visual Studio Code simplifica esse processo.
- NVM (Node Version Manager): Uma interface de linha de comando para definir ou alternar sua versão local do Node.js.
Transfira e instale Node.js com base na utilização pretendida
Você pode baixar e instalar Node.js com base em suas necessidades.
Problemas de compatibilidade
Aqui estão algumas categorias comuns de problemas de compatibilidade que podem surgir quando as versões Node.js não correspondem entre 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, não suportada por versões Node.js mais antigas, podem causar erros de sintaxe. Esses erros impedem que o aplicativo seja executado.
APIs preteridas: APIs que são preteridas em versões Node.js mais recentes ainda podem estar presentes em versões mais antigas, levando a erros de comportamento inesperados ou de tempo de execução se as versões não estiverem alinhadas.
Performance Degradation: As versões mais recentes do Node.js costumam incluir 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: As diferenças na forma como as versões Node.js gerem certas operações, tais como a manipulação de buffers, o comportamento do loop de eventos ou a resolução de módulos, podem resultar num comportamento inconsistente entre ambientes.
Conflitos de dependência: Node.js módulos ou pacotes 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 tempo de execução.
Build Failures: pipelines de CI/CD que utilizam uma versão Node.js diferente do ambiente de desenvolvimento local podem levar a falhas de compilação, provocando 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 suave.