Problemen met Application Insights JavaScript SDK oplossen

In dit artikel wordt beschreven hoe u verschillende problemen met de Application Insights JavaScript SDK kunt oplossen. De onderwerpen in dit artikel bevatten sdk-laadfouten voor JavaScript-web-apps en ondersteuning voor brontoewijzingen voor JavaScript-apps.

Sdk-laadfouten voor JavaScript-web-apps oplossen

In de volgende secties worden de symptomen, oorzaken en oplossingen besproken voor een specifiek scenario met sdk-laadfouten voor JavaScript-web-apps.

Symptomen

In het <hoofdelement> van de webpagina die u bewaakt, maakt en rapporteert het JavaScript-codefragment (versie 3 of een latere versie) de volgende uitzondering wanneer wordt gedetecteerd dat het SDK-script niet is gedownload of geïnitialiseerd:

SDK LOAD Failure: Kan application Insights SDK-script niet laden (zie stack voor meer informatie)

Dit bericht geeft aan dat de client (browser) van de gebruiker de Application Insights SDK niet kan downloaden of kan initialiseren vanaf de geïdentificeerde hostingpagina. Daarom ziet u geen telemetrie of gebeurtenissen.

Azure Portal schermopname van de uitzondering met de titel 'SDK LOAD Failure: Failed to load Application Insights SDK script (zie stack for details).'

Opmerking

Deze uitzondering wordt ondersteund in alle belangrijke browsers die ondersteuning bieden voor de fetch() API of XMLHttpRequest. Deze browserversies sluiten Microsoft Internet Explorer 8 en eerdere versies uit. Daarom melden deze browsers dit type uitzondering niet, tenzij uw omgeving een polyfill voor ophalen bevat.

Azure Portal schermopname van de uitzondering 'SDK LOAD Failure'. Details zijn onder andere de aanroepstack, gebeurtenistijd, bericht, uitzonderingstype en mislukte methode.

De stackdetails bevatten de basisinformatie over de URL's die door de gebruiker worden gebruikt.

Naam Beschrijving
<CDN-eindpunt> De URL die is gebruikt (en mislukt) om de SDK te downloaden.
<Help-koppeling> Een URL die is gekoppeld aan documentatie voor probleemoplossing (deze pagina).
<Host-URL> De volledige URL van de pagina die de gebruiker gebruikte.
<Eindpunt-URL> De URL die is gebruikt om de uitzondering te rapporteren. Deze waarde kan helpen bepalen of het openbare internet of een privécloud toegang heeft tot de hostingpagina.

De volgende lijst bevat de meest voorkomende redenen waarom deze uitzondering optreedt:

  • Onregelmatige netwerkverbindingsfout

  • Cdn-storing (Content Delivery Network) van Application Insights

  • FOUT met SDK-initialisatie na het laden van het script

  • Blokkering van het Application Insights JavaScript-CDN

Onregelmatige netwerkverbindingsfouten zijn de meest voorkomende reden voor deze uitzondering, met name in scenario's voor mobiele roaming.

In de volgende secties wordt beschreven hoe u elke mogelijke hoofdoorzaak van deze fout kunt oplossen.

Opmerking

Bij sommige van deze stappen wordt ervan uitgegaan dat uw toepassing direct beheer heeft over het codefragmentscript </> de code en de configuratie ervan die wordt geretourneerd als onderdeel van de html-hostpagina. Als deze voorwaarden niet van toepassing zijn op uw scenario, zijn deze stappen ook niet van toepassing.

Oorzaak 1: onregelmatige netwerkverbindingsfout

Als de gebruiker onregelmatige netwerkverbindingsfouten ondervindt, zijn er minder mogelijke oplossingen dan voor andere oorzaken. Deze fout wordt echter meestal snel opgelost. Als de gebruiker bijvoorbeeld de pagina vernieuwt om uw site opnieuw te laden, worden de bestanden uiteindelijk gedownload en lokaal in de cache opgeslagen tot de release van een bijgewerkte versie.

Oplossing 1a: Een bijgewerkte versie van de SDK downloaden

Om onregelmatige netwerkverbindingsfouten te minimaliseren, hebben we headers geïmplementeerd Cache-Control op alle CDN-bestanden. Nadat de browser van de gebruiker de huidige versie van de SDK heeft gedownload, hoeft deze niet opnieuw te worden gedownload omdat de eerder verkregen kopie opnieuw wordt gebruikt. (Bekijk hoe cache werkt.) Als de cachecontrole mislukt of als er een nieuwe release beschikbaar is, moet de browser van de gebruiker de bijgewerkte versie downloaden. Daarom ziet u mogelijk een achtergrondniveau van 'ruis' in het scenario met controlefouten. Of u ziet mogelijk een tijdelijke piek wanneer een nieuwe release optreedt en algemeen beschikbaar wordt (geïmplementeerd op het CDN).

Oplossing 1b: npm-pakketten gebruiken om de SDK samen met de toepassing in te sluiten in één bundel

Is de uitzondering voor sdk-belastingsfouten persistent en treedt deze voor veel gebruikers op, samen met een vermindering van de normale clienttelemetrie? In dit geval zijn onregelmatige netwerkverbindingsproblemen waarschijnlijk niet de ware oorzaak van het probleem en moet u andere mogelijke oorzaken verkennen.

Opmerking

Een veelvoorkomende indicatie dat deze fout voor meerdere gebruikers optreedt, is dat de uitzondering op een snel en langdurig niveau wordt gerapporteerd.

In deze situatie is het onwaarschijnlijk dat het hosten van de SDK op uw eigen CDN deze uitzondering biedt of vermindert. Hetzelfde probleem is van invloed op uw eigen CDN en treedt ook op als u de SDK gebruikt via een npm-pakketoplossing. Het laatste scenario treedt vooral op als Application Insights is opgenomen in een andere bundel dan die van de toepassing die wordt bewaakt, omdat de fout gegarandeerd optreedt in ten minste een van deze bundels. Vanuit het perspectief van de gebruiker kan uw hele toepassing niet worden geladen of geïnitialiseerd wanneer deze uitzondering optreedt, niet alleen de telemetrie-SDK (die gebruikers niet zien). Daarom blijven gebruikers uw site waarschijnlijk vernieuwen totdat deze volledig wordt geladen.

U kunt npm-pakketten gebruiken om de Application Insights SDK samen met de bewaakte toepassing in te sluiten in één bundel. Hoewel er in dit scenario nog steeds een onregelmatige fout kan optreden, biedt een gecombineerde bundel een reële kans om het probleem op te lossen.

Oorzaak 2: Application Insights CDN-storing

Als u wilt controleren of er een Application Insights CDN-storing is, probeert u het CDN-eindpunt rechtstreeks vanuit de browser te openen vanaf een andere locatie dan die van uw gebruikers. U kunt bijvoorbeeld proberen toegang te https://js.monitor.azure.com/scripts/b/ai.2.min.js krijgen vanaf uw eigen ontwikkelcomputer. (Hierbij wordt ervan uitgegaan dat uw organisatie dit domein niet heeft geblokkeerd.)

Oplossing 2: Een ondersteuningsticket maken

Als u controleert of er een storing bestaat, kunt u een nieuw ondersteuningsticket maken.

Oorzaak 3: SDK is niet geïnitialiseerd na het laden van het script

Als de SDK niet initialiseert, wordt het <script/> nog steeds gedownload van het CDN, maar mislukt het tijdens de initialisatie. Deze fout treedt op vanwege ontbrekende of ongeldige afhankelijkheden, of vanwege een vorm van JavaScript-uitzondering.

Oplossing 3: Controleren op een geslaagde SDK-download of JavaScript-uitzonderingen, of browseropsporing inschakelen

Stap 1: Controleren op een geslaagde SDK-download

Controleer of de SDK is gedownload. Als er geen script is gedownload, is dit scenario niet de oorzaak van de uitzondering voor sdk-laadfouten. Gebruik een browser die ondersteuning biedt voor ontwikkelhulpprogramma's. Selecteer F12 om de ontwikkelhulpprogramma's weer te geven en selecteer vervolgens het tabblad Netwerk . Controleer of het script dat is gedefinieerd in de configuratie van het src-fragment , is gedownload. Controleer hiervoor op antwoordcode 200 (geslaagd) of 304 (niet gewijzigd). Als u het netwerkverkeer wilt controleren, kunt u ook een hulpprogramma voor webfoutopsporing gebruiken, zoals Fiddler.

Als de SDK niet is gedownload, raadpleegt u de volgende tabel voor meer informatie over de verschillende rapportageopties.

Scenario Oorzaak Actie
Het probleem treft slechts enkele gebruikers en een specifieke browserversie of een subset van browserversies. (Controleer de details van de gerapporteerde uitzondering.) Het probleem treedt waarschijnlijk alleen op als specifieke gebruikers of omgevingen vereisen dat uw toepassing extra polyfill implementaties biedt. Dien een probleem in op GitHub.
Het probleem is van invloed op uw hele toepassing en al uw gebruikers. Het is een probleem met betrekking tot de release. Maak een nieuw ondersteuningsticket.

Als de SDK is gedownload, raadpleegt u de volgende secties om het probleem met de SDK-initialisatie op te lossen.

Stap 2: Controleren op JavaScript-uitzonderingen

Controleer op JavaScript-uitzonderingen. Gebruik een browser die ondersteuning biedt voor ontwikkelhulpprogramma's. Selecteer F12 om de ontwikkelhulpprogramma's weer te geven, laad de pagina en controleer of er uitzonderingen zijn opgetreden. Veroorzaakt het SDK-script (bijvoorbeeld in ai.2.min.js) uitzonderingen? In dit geval is een van de volgende scenario's opgetreden:

  • De configuratie die wordt doorgegeven aan de SDK bevat een onverwachte configuratie.

  • In de configuratie die wordt doorgegeven aan de SDK ontbreekt een vereiste configuratie.

  • Er is een foutieve release geïmplementeerd in het CDN.

Als u wilt controleren op een onjuiste configuratie, wijzigt u de configuratie die wordt doorgegeven aan het codefragment (als u dit nog niet hebt gedaan), zodat deze alleen uw instrumentatiesleutel als tekenreekswaarde bevat. In de volgende code ziet u een voorbeeld van een wijziging in de codeconfiguratie.

Opmerking

Ondersteuning voor opname van instrumentatiesleutels eindigt op 31 maart 2025. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Zie Overgang naar verbindingsreeksen om te profiteren van nieuwe mogelijkheden.

<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
    instrumentationKey: "<instrumentation-key-guid>"
}});
</script>

Wanneer u deze minimale configuratie gebruikt en u nog steeds een JavaScript-uitzondering ziet in het SDK-script, maakt u een nieuw ondersteuningsticket. Als u het probleem wilt oplossen, moet u de defecte build terugdraaien. Dit komt doordat een zojuist geïmplementeerde versie waarschijnlijk de oorzaak van het probleem is.

Als de uitzondering verdwijnt, wordt het probleem waarschijnlijk veroorzaakt door een niet-overeenkomend type of onverwachte waarde. Begin met het oplossen van problemen door uw configuratieopties één voor één te herstellen en test na elke wijziging totdat de uitzondering zich opnieuw voordoet. Controleer vervolgens de documentatie voor het item dat het probleem veroorzaakt. Als de documentatie onduidelijk is of als u hulp nodig hebt, kunt u een probleem indienen op GitHub.

Was uw configuratie eerder geïmplementeerd en werkte, maar rapporteert deze uitzondering nu? In dit geval kan er een probleem zijn dat van invloed is op een nieuw geïmplementeerde versie. Controleer of de uitzondering slechts van invloed is op een kleine set van uw gebruikers of browsers. Dien een probleem in op GitHub of maak een nieuw ondersteuningsticket.

Stap 3: Foutopsporing in de browserconsole inschakelen

Als er geen uitzonderingen zijn opgetreden, moet u foutopsporing in de console inschakelen door de instelling loggingLevelConsole toe te voegen aan de configuratie, zoals wordt weergegeven in het volgende voorbeeld van de codefragmentconfiguratie. Met deze wijziging worden alle initialisatiefouten en waarschuwingen verzonden naar de console van de browser. (Als u de browserconsole wilt weergeven, selecteert u F12 om de ontwikkelhulpprogramma's te openen en selecteert u vervolgens het tabblad Console .) Alle gerapporteerde fouten moeten voor zich spreken. Als u meer hulp nodig hebt, kunt u een probleem indienen op GitHub.

<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
    instrumentationKey: "<instrumentation-key-guid>",
    loggingLevelConsole: 2
}});
</script>

Opmerking

Tijdens de initialisatie voert de SDK enkele basiscontroles uit op bekende belangrijke afhankelijkheden. Als de huidige runtime deze controles niet biedt, rapporteert de runtime de fouten als waarschuwingsberichten aan de console (maar alleen als de loggingLevelConsole instellingswaarde groter is dan nul).

Als de SDK nog steeds niet wordt geïnitialiseerd, schakelt u de configuratie-instelling enableDebug in. Nadat u deze wijziging hebt aangebracht, worden alle interne fouten als uitzonderingen gegenereerd. Dit veroorzaakt verlies van telemetrie. Omdat deze instelling alleen voor ontwikkelaars geldt, worden er waarschijnlijk meer uitzonderingen gegenereerd vanwege interne controles. Controleer elke uitzondering om te bepalen welk probleem ervoor zorgt dat de SDK mislukt. Gebruik de niet-gecontroleerde versie van het script (door de bestandsnaamextensie te wijzigen van .min.js in alleen .js). Anders zijn de uitzonderingen onleesbaar. In de volgende code ziet u de voorbeeldconfiguratiewijzigingen voor fragmenten.

Waarschuwing

Deze instelling alleen voor ontwikkelaars moet NOOIT worden ingeschakeld in een volledige productieomgeving, omdat u hierdoor telemetrie verliest.

<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.js",
cfg:{
    instrumentationKey: "<instrumentation-key-guid>",
    enableDebug: true
}});
</script>

Als deze actie nog steeds geen inzichten oplevert, moet u een probleem indienen op GitHub door de details en een voorbeeldsite op te geven, als u er een gebruikt. Voeg de details van de browserversie, het besturingssysteem en het JavaScript-framework toe om het probleem te identificeren.

Oorzaak 4: Blokkering van het Application Insights JavaScript-CDN

Een CDN-blokkering is mogelijk als een Application Insights JavaScript SDK CDN-eindpunt wordt gerapporteerd of geïdentificeerd als onveilig. In deze situatie wordt het eindpunt openbaar geblokkeerd en beginnen gebruikers van deze lijsten alle toegang te blokkeren.

Om dit probleem op te lossen, moet de eigenaar van het CDN-eindpunt werken met de bloklijstentiteit die het eindpunt als onveilig heeft gemarkeerd. Vervolgens kan de bloklijstentiteit het eindpunt uit de relevante lijst verwijderen.

Controleer de volgende internetbeveiligingswebsites om erachter te komen of ze het CDN-eindpunt als onveilig identificeren:

Het kan lang duren voordat dit probleem is opgelost. Gebruikers of zakelijke IT-afdelingen moeten mogelijk een update afdwingen of de CDN-eindpunten expliciet toestaan. De totale hoeveelheid tijd die nodig is om dit probleem op te lossen, is afhankelijk van de frequentie die de toepassing, firewall of omgeving nodig heeft om hun lokale kopieën van de lijsten bij te werken.

Als het CDN-eindpunt wordt geïdentificeerd als onveilig, maakt u een ondersteuningsticket om het probleem zo snel mogelijk op te lossen.

In de volgende secties wordt meer specifiek beschreven hoe een blokkering kan optreden en hoe u de blokkering kunt oplossen.

Oorzaak 4a: Gebruikersblokkering (browser, geïnstalleerde blokkering of persoonlijke firewall)

Controleer of uw gebruikers een van de volgende configuratieacties hebben uitgevoerd:

  • Een browserinvoegtoepassing geïnstalleerd (meestal in de vorm van een advertentie, malware of pop-upblokkering)

  • De Application Insights CDN-eindpunten in hun browser of proxy geblokkeerd of niet toegestaan

  • Een firewallregel geconfigureerd die een blokkering van het CDN-domein voor de SDK veroorzaakt (of een fout bij het oplossen van de DNS-vermelding)

Oplossing 4a: Blokkeringsuitzonderingen voor CDN-eindpunten toevoegen

Als uw gebruikers een van de vermelde configuratieacties hebben uitgevoerd, werkt u ermee (of verstrekt u documentatie) om de CDN-eindpunten toe te staan.

Gebruikers hebben mogelijk invoegtoepassingen geïnstalleerd die gebruikmaken van de openbare blokkeringslijst. Zo niet, dan gebruiken ze waarschijnlijk een andere handmatig geconfigureerde oplossing of maken de invoegtoepassingen gebruik van een blokkeringslijst voor privédomeinen.

Laat uw gebruikers het downloaden van scripts van de Application Insights CDN-eindpunten toestaan door de eindpunten op te slaan in de uitzonderingslijst voor invoegtoepassingen of firewallregels van hun browser. Deze lijsten variëren op basis van de gebruikersomgeving.

Hier volgt een voorbeeld van deze situatie waarin wordt getoond hoe u Google Chrome configureert om toegang tot websites toe te staan of te blokkeren.

Oorzaak 4b: Bedrijfsfirewallblokkering

Als uw gebruikers zich op een bedrijfsnetwerk bevinden, is de bedrijfsfirewall waarschijnlijk de bron van de CDN-blokkering. De IT-afdeling van het bedrijf heeft waarschijnlijk een vorm van internetfiltersysteem geïmplementeerd.

Oplossing 4b1: Uitzonderingen toevoegen voor CDN-eindpunten voor bedrijven

Belangrijk

Gebruiken uw gebruikers een privécloud en hebben ze geen toegang tot het openbare internet? In dit geval moet u de Application Insights npm-pakketten gebruiken om de SDK in te sluiten of de Application Insights SDK op uw eigen CDN hosten.

Neem contact op met de IT-afdeling van uw bedrijf om de benodigde regels voor uw gebruikers toe te staan. Deze oplossing is vergelijkbaar met het toevoegen van uitzonderingen voor gebruikers. Laat de IT-afdeling de Application Insights CDN-eindpunten configureren voor downloaden door ze op te slaan (of te verwijderen) in een domeinblokkerings- of acceptatielijstservices.

Oplossing 4b2: Host de SDK op uw eigen CDN

In plaats van gebruikers de Application Insights SDK te laten downloaden van het openbare CDN, kunt u de Application Insights SDK hosten op uw eigen CDN-eindpunt. We raden u aan een specifieke versie (ai.2.#.#.min.js) van de SDK te gebruiken, zodat u gemakkelijker kunt bepalen welke versie u gebruikt. Werk de SDK ook regelmatig bij naar de huidige versie (ai.2.min.js), zodat u eventuele bugfixes en nieuwe functies kunt gebruiken die beschikbaar komen.

Oplossing 4b3: npm-pakketten gebruiken om de Application Insights SDK in te sluiten

In plaats van het codefragment te gebruiken en openbare CDN-eindpunten toe te voegen, kunt u de npm-pakketten gebruiken om de SDK op te nemen als onderdeel van uw eigen JavaScript-bestanden. De SDK wordt gewoon een ander pakket binnen uw eigen scripts. Zie de sectie npm-gebaseerde installatie van de Application Insights JavaScript SDK GitHub-pagina voor meer informatie.

Opmerking

Wanneer u npm-pakketten gebruikt, wordt u aangeraden ook een vorm van JavaScript-bundel te gebruiken om u te helpen bij het splitsen en minificeren van code.

Net als bij het codefragment kunnen dezelfde blokkeringsproblemen die hier worden weergegeven, van invloed zijn op uw eigen scripts (met of zonder het gebruik van de SDK npm-pakketten). Afhankelijk van uw toepassing, uw gebruikers en uw framework, kunt u overwegen om iets vergelijkbaars te implementeren als de logica in het codefragment om deze problemen te detecteren en te melden.

Problemen met brontoewijzingsondersteuning voor JavaScript-toepassingen oplossen

In de volgende tabel worden bepaalde problemen beschreven die betrekking hebben op ondersteuning van brontoewijzingen voor JavaScript-toepassingen, en biedt strategieën om deze problemen op te lossen.

Probleem Omschrijving
Vereiste azure-instellingen voor op rollen gebaseerd toegangsbeheer (Azure RBAC) voor uw blobcontainer Aan elke gebruiker in de portal die deze functie gebruikt, moet ten minste de rol Lezer voor opslagblobgegevens voor uw blobcontainer worden toegewezen. U moet deze rol toewijzen aan iedereen die de brontoewijzingen via deze functie wil gebruiken. Afhankelijk van hoe de container is gemaakt, is deze rol mogelijk niet automatisch toegewezen aan u of uw team.
Brontoewijzing is niet gevonden Voer de volgende acties uit om dit probleem op te lossen:
  1. Controleer of de bijbehorende brontoewijzing is geüpload naar de juiste blobcontainer.
  2. Controleer of het brontoewijzingsbestand de naam krijgt van het JavaScript-bestand waaraan het is toegewezen en of het de bestandsextensie .map heeft. Bijvoorbeeld: /static/js/main.4e2ca5fa.chunk.js zoekt naar de blob met de naam main.4e2ca5fa.chunk.js.map.
  3. Controleer de console van uw browser om te zien of er fouten worden gelogd. Neem deze uitvoer op in een ondersteuningsticket.

De waarschuwing 'Klik op gebeurtenisrijen zonder parentId-waarde' herstellen

Wanneer u Application Insights en de invoegtoepassing Click Analytics Auto-Collection in de toepassing gebruikt, kan de volgende telemetriewaarschuwing worden weergegeven in de Application Insights-werkmap: 'Klik op Gebeurtenisrijen zonder parentId-waarde'.

Oorzaak

Dit probleem kan optreden als de bovenliggende id niet is opgegeven in het bovenliggende HTML-element. Deze voorwaarde zorgt ervoor dat de gebeurtenis wordt geactiveerd op alle bovenliggende elementen.

Oplossing

U kunt dit probleem oplossen door het data-parentid kenmerk of data-<customPrefix>-parentid toe te voegen aan het bovenliggende HTML-element. Hier volgt een voorbeeld van de HTML-code:

<div data-heart-id="demo Header" data-heart-parentid="demo.Header" data-heart-parent-group="demo.Header.Group">

Volgende stappen

Disclaimerinformatie van derden

De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.