Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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_ERRORda aplicação paratrue. 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
Fluxos HTTP que não funcionam
Se o streaming HTTP não estiver a funcionar:
- Verifique
@azure/functionsse a versão do pacote é 4.3.0 ou posterior. - Certifique-se de que a versão de runtime do Funções do Azure é 4.28 ou posterior.
- Verifique se
app.setup({ enableHttpStream: true })é chamado. - O Verify
FUNCTIONS_REQUEST_BODY_SIZE_LIMITestá configurado adequadamente para grandes volumes de dados.
Ganchos não executados
Se os seus hooks não estiverem a ser executados:
- Confirma que estás a usar o modelo de programação v4.
- Verifique a sintaxe de registo do hook:
app.hook.preInvocation()ouapp.hook.appStart(). - Verifica se registas os ganchos antes das definições de funções.
- Revise o filtro de gatilhos se os hooks só devem funcionar para tipos específicos de funções.
Problemas de compilação do TypeScript
Para problemas específicos do TypeScript:
Falhas na compilação:
- Verifica se
tsconfig.jsontem ooutDircorretamente apontado para a saída da compilação - Assegurar que
scriptFileno modelo v3 aponta para ficheiros compilados.js, não.ts - Verifique se todas as dependências do TypeScript estão instaladas:
npm install --save-dev typescript @types/node
Erros de tipo:
- Atualizar o pacote
@azure/functionspara as definições de tipos mais recentes - Utilize importações adequadas:
import { app, HttpRequest, InvocationContext } from '@azure/functions' - Verificar se as assinaturas de funções correspondem aos tipos esperados
Problemas de resolução de módulos
Não se encontram erros de módulo:
- Execute
npm installpara garantir que todas as dependências estão instaladas - A pasta Check
node_modulesexiste no pacote de implementação - Para módulos ES, certifique-se de que os nomes de ficheiro usam
.mjsextensão oupackage.jsontem"type": "module" - Verifique se os caminhos de importação relativos estão corretos após a compilação do TypeScript
Questões de ambiente e configuração
Variáveis de ambiente em falta:
- Adicionar variáveis a
local.settings.jsonpara desenvolvimento local - Definir Definições de Aplicação no portal Azure para implementação na cloud
- Utilização
process.env["VARIABLE_NAME"]para aceder a valores
Problemas de registo:
- Use
context.log()em vez deconsole.log()para registos específicos de função - Verifique se a cadeia de ligação do Application Insights está configurada
- Verifique os níveis de registo em
host.jsonpara filtrar
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.