Resolver problemas em aplicações Node.js no Funções do Azure

Importante

O conteúdo deste artigo muda com base na sua escolha do modelo de programação Node.js no seletor na parte superior da página. O modelo v4 está geralmente disponível e foi projetado para ter uma experiência mais flexível e intuitiva para desenvolvedores JavaScript e TypeScript. Saiba mais sobre as diferenças entre v3 e v4 no guia de migração.

Este artigo fornece um guia para resolver cenários comuns em Node.js aplicações funcionais.

O separador Diagnosticar e resolver problemas no portal do Azure é um recurso útil para monitorizar e diagnosticar possíveis problemas relacionados com a sua aplicação. Também fornece potenciais soluções para os seus problemas com base no diagnóstico. Para mais informações, consulte Diagnósticos da app do Azure Functions.

Outro recurso útil é o separador Logs no portal do Azure para a sua instância do Application Insights, para que possa executar consultas KQL personalizadas. A seguinte consulta de exemplo mostra como visualizar erros e avisos da sua aplicação no último dia:

let myAppName = "<your app name>";
let startTime = ago(1d);
let endTime = now();
union traces,requests,exceptions
| where cloud_RoleName =~ myAppName
| where timestamp between (startTime .. endTime)
| where severityLevel > 2

Se esses recursos não resolveram o seu problema, as secções seguintes fornecem conselhos para questões específicas de aplicação:

Nenhuma função encontrada

Se vir algum dos seguintes erros nos seus registos:

Não foram encontrados gatilhos HTTP.

Nenhuma função de trabalho encontrada. Experimente tornar públicas as suas classes de tarefa e métodos. Se estiveres a usar extensões de associação (por exemplo, Armazenamento do Azure, ServiceBus, Timers, etc.), certifica-te de que chamaste o método de registo da(s) extensão(ões) no teu código de inicialização (por exemplo, builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).

Experimente as seguintes soluções:

  • Ao correr localmente, certifique-se de que está a usar o Funções do Azure Core Tools v4.0.5382 ou superior.
  • Ao correr no Azure:
    • Certifica-te de que estás a usar a versão do runtime do Funções do Azure 4.25 ou posterior.

    • Certifica-te de que estás a usar Node.js v18 ou superior.

    • Defina as definições FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR da aplicação para true. Esta configuração é recomendada para todas as aplicações modelo v4 e garante que todos os erros de entrada são visíveis nos registos de insights da sua aplicação. Para obter mais informações, consulte Referência de configurações de aplicativo para o Funções do Azure.

    • Verifica os registos da tua app de funções para erros nos pontos de entrada. A consulta de exemplo seguinte mostra como visualizar erros no ponto de entrada para a sua aplicação no último dia:

      let myAppName = "<your app name>";
      let startTime = ago(1d);
      let endTime = now();
      union traces,requests,exceptions
      | where cloud_RoleName =~ myAppName
      | where timestamp between (startTime .. endTime)
      | where severityLevel > 2
      | where message has "entry point"
      
  • Certifica-te de que a tua aplicação tem a estrutura de pastas necessária com uma host.json na raiz e uma pasta para cada função contendo um ficheirofunction.json .

A solicitação Undici não é um construtor

Se aparecer o seguinte erro nos registos da sua aplicação de funções:

System.Private.CoreLib: Exceção durante a execução da função: Functions.httpTrigger1. System.Private.CoreLib: Resultado: Exceção de falha: undici_1.Request não é um construtor

Certifica-te de que estás a usar Node.js versão 22.x ou superior.

Falhou a deteção do runtime do Funções do Azure

Se aparecer o seguinte erro nos registos da sua aplicação de funções:

AVISO: Falhou a deteção do runtime do Funções do Azure. Mudar o pacote "@azure/functions" para o modo de teste - nem todas as funcionalidades são suportadas.

Verifique o ficheiro package.json para ver se existe uma referência a applicationinsights e certifique-se de que a versão é ^2.7.1 ou superior. Depois de atualizar a versão, execute npm install

Obtenha ajuda da Microsoft

Pode obter mais ajuda da Microsoft de uma das seguintes formas:

  • Pesquise os problemas conhecidos no repositório Funções do Azure Node.js. Se não vires o teu problema mencionado, cria um novo e diz-nos o que aconteceu.
  • Se não conseguir diagnosticar o seu problema com este guia, os engenheiros de suporte da Microsoft estão disponíveis para ajudar a diagnosticar problemas na sua aplicação. A Microsoft oferece vários planos de suporte. Crie um ticket de suporte na secção de Suporte + resolução de problemas da página da sua aplicação de funções no portal Azure.

Passos seguintes