Résoudre les problèmes Node.js applications dans Azure Functions

Important

Le contenu de cet article change en fonction de votre choix de modèle de programmation Node.js dans le sélecteur en haut de la page. Le modèle v4 est en disponibilité générale. Il est conçu pour offrir une expérience plus flexible et intuitive aux développeurs JavaScript et TypeScript. En savoir plus sur les différences entre v3 et v4 dans le guide de migration.

Le guide fourni dans cet article permet de résoudre des problèmes de scénarios courants dans les applications de fonction Node.js.

L’onglet Diagnostiquer et résoudre les problèmes du portail Azure est une ressource utile pour surveiller et diagnostiquer les éventuels problèmes liés à votre application. Il fournit également des solutions possibles à vos problèmes en fonction du diagnostic. Pour plus d’informations, consultez Diagnostics d’application de fonction Azure.

L’onglet Journaux dans le Portail Azure est une autre ressource utile pour votre instance Application Insights : il vous permettra d’exécuter des requêtes KQL personnalisées. L’exemple de requête suivant montre comment afficher les erreurs et les avertissements pour votre application au cours de la journée passée :

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

Si les ressources ci-dessus n’ont pas résolu votre problème, les sections suivantes fournissent des conseils par rapport à des symptômes spécifiques de l’application :

Aucune fonction trouvée

Si vous voyez l’une des erreurs suivantes dans vos journaux :

Aucun déclencheur HTTP trouvé.

Aucune fonction de travail trouvée. Essayez de rendre vos classes et méthodes de travail publiques. Si vous utilisez des extensions de liaison (par exemple, Stockage Azure, ServiceBus, Minuteurs, etc.), vérifiez que vous avez appelé la méthode d’inscription pour les extensions dans votre code de démarrage (par exemple, générateur). AddAzureStorage(), générateur. AddServiceBus(), générateur. AddTimers(), etc.).

Essayez les correctifs suivants :

  • Lors de l’exécution locale, vérifiez que vous utilisez Azure Functions Core Tools v4.0.5382 ou version ultérieure.
  • Lors de l’exécution dans Azure :
    • Vérifiez que vous utilisez la version 4.25 du runtime d’Azure Functions ou une version ultérieure.

    • Vérifiez que vous utilisez Node.js version 18 ou ultérieure.

    • Définissez le paramètre d’application FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR sur true. Ce paramètre est recommandé pour toutes les applications de modèle v4 et garantit que toutes les erreurs de point d’entrée sont visibles dans vos journaux Application Insights. Pour plus d'informations, consultez Informations de référence sur les paramètres d'application d'Azure Functions.

    • Vérifiez les journaux de votre application de fonction pour les erreurs de point d’entrée. L’exemple de requête suivant montre comment afficher les erreurs de point d’entrée pour votre application au cours de la journée passée :

      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"
      
  • Vérifiez que votre application dispose de la structure de dossiers requise avec un host.json à la racine et un dossier pour chaque fonction contenant un fichier function.json.

La requête Undici n’est pas un constructeur

Si vous obtenez l’erreur suivante dans les journaux de votre application de fonction :

System.Private.CoreLib: Exception lors de l’exécution de la fonction : Functions.httpTrigger1. System.Private.CoreLib: Result: Failure Exception: undici_1.Request n’est pas un constructeur

Vérifiez que vous utilisez Node.js version 18.x ou ultérieure.

Échec de la détection du runtime Azure Functions

Si vous obtenez l’erreur suivante dans les journaux de votre application de fonction :

AVERTISSEMENT : Échec de la détection du runtime Azure Functions. Passage du package « @azure/functions » en mode test. Toutes les fonctionnalités ne sont pas prises en charge.

Vérifiez que votre fichier package.json contient une référence à applicationinsights et assurez-vous que la version correspond à ^2.7.1 ou à une version ultérieure. Après la mise à jour de la version, exécutez npm install.

Obtenir de l’aide de Microsoft

Vous pouvez obtenir plus d’aide de Microsoft de l’une des manières suivantes :

  • Recherchez les problèmes connus dans le référentiel Azure Functions Node.js. Si vous ne voyez pas votre problème mentionné, créez un problème et faites-nous savoir ce qui s’est passé.
  • Si vous ne parvenez pas à diagnostiquer votre problème à l’aide de ce guide, les ingénieurs du support technique Microsoft sont disponibles pour vous aider à diagnostiquer les problèmes liés à votre application. Microsoft propose différents plans de support. Créez un ticket de support dans la section Prise en charge et résolution des problèmes de la page de l’application de fonction dans le portail Azure.

Étapes suivantes