Problemen met sdk-laadfouten voor JavaScript-web-apps oplossen

De uitzondering voor het laden van de SDK wordt gemaakt en gerapporteerd door het JavaScript-fragment (v3 of hoger) wanneer wordt gedetecteerd dat het SDK-script niet kan worden gedownload of geïnitialiseerd. Simplistisch kon de client van uw eindgebruikers (browser) de Application Insights SDK niet downloaden of initialiseren vanaf de geïdentificeerde hostingpagina en daarom worden er geen telemetrie of gebeurtenissen gerapporteerd.

Azure portal browser failure overview

Notitie

Deze uitzondering wordt ondersteund in alle primaire browsers die ondersteuning bieden voor de fetch() API of XMLHttpRequest. Dit sluit IE 8 en lager uit, dus u krijgt dit type uitzondering niet gerapporteerd van die browsers (tenzij uw omgeving een fetch polyfill bevat).

browser exception detail

De stackdetails bevatten de basisinformatie met de URL's die door de eindgebruiker worden gebruikt.

Naam Beschrijving
<CDN-eindpunt> De URL die is gebruikt (en is mislukt) om de SDK te downloaden.
<Help-koppeling> Een URL die koppelingen bevat naar documentatie voor probleemoplossing (deze pagina).
<Host-URL> De volledige URL van de pagina die de eindgebruiker gebruikte.
<Eindpunt-URL> De URL die is gebruikt om de uitzondering te rapporteren, kan deze waarde handig zijn bij het identificeren of de hostingpagina is geopend vanaf het openbare internet of een privécloud.

De meest voorkomende redenen voor deze uitzondering:

  • Onregelmatige netwerkverbindingsfout.
  • Toepassing Insights CDN storing.
  • DE SDK kan niet worden geïnitialiseerd na het laden van het script.
  • De toepassing Insights JavaScript-CDN is geblokkeerd.

Onregelmatige netwerkconnectiviteitsfout is de meest voorkomende reden voor deze uitzondering, met name in scenario's met mobiele roaming waarbij de gebruikers af en toe de netwerkverbinding verliezen.

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

Notitie

In een aantal van de stappen voor probleemoplossing wordt ervan uitgegaan dat uw toepassing directe controle heeft over het script/>codefragment <en de configuratie die wordt geretourneerd als onderdeel van de hosting-HTML-pagina. Als u dat niet doet, zijn deze geïdentificeerde stappen niet van toepassing op uw scenario.

Onregelmatige netwerkverbindingsfout

Als de gebruiker onregelmatige netwerkverbindingsfouten ondervindt, zijn er minder mogelijke oplossingen en worden ze over het algemeen gedurende een korte periode opgelost. Als de gebruiker bijvoorbeeld uw site opnieuw laadt (de pagina vernieuwt), worden de bestanden (uiteindelijk) gedownload en lokaal in de cache opgeslagen totdat een bijgewerkte versie wordt uitgebracht.

Notitie

Als deze uitzondering persistent is en zich voordoet voor veel van uw gebruikers (gediagnosticeerd door een snel en langdurig niveau van deze uitzondering dat wordt gerapporteerd), samen met een vermindering van normale clienttelemetrie, is onregelmatige netwerkverbindingsproblemen niet waarschijnlijk de werkelijke oorzaak van het probleem en moet u doorgaan met het diagnosticeren van de andere bekende mogelijke problemen.

Met deze situatie die als host fungeert voor de SDK op uw eigen CDN is het onwaarschijnlijk dat u de exemplaren van deze uitzondering opgeeft of vermindert, omdat uw eigen CDN worden beïnvloed door hetzelfde probleem.

Hetzelfde geldt ook voor het gebruik van de SDK via de NPM-pakketoplossing. Vanuit het perspectief van eindgebruikers wanneer dit gebeurt, kan uw hele toepassing echter niet worden geladen/geïnitialiseerd (in plaats van alleen de telemetrie-SDK die ze niet visueel zien), zodat ze uw site waarschijnlijk vernieuwen totdat deze volledig wordt geladen.

U kunt ook NPM-pakketten gebruiken om de Application Insights SDK in te sluiten.

Om onregelmatige netwerkconnectiviteitsfouten te minimaliseren, hebben we Cache-Control headers geïmplementeerd op alle CDN bestanden, zodat zodra de browser van de eindgebruiker de huidige versie van de SDK heeft gedownload, deze niet opnieuw hoeft te worden gedownload en de browser de eerder verkregen kopie opnieuw zal gebruiken (zie hoe caching werkt). Als de cachecontrole mislukt of er een nieuwe release is, moet de browser van uw eindgebruiker de bijgewerkte versie downloaden. U ziet dus mogelijk een achtergrondniveau van 'ruis' in het controlefoutscenario of een tijdelijke piek wanneer een nieuwe release plaatsvindt en algemeen beschikbaar wordt gesteld (geïmplementeerd in de CDN).

Uitval van toepassing Insights CDN

U kunt controleren of er sprake is van een storing in de toepassing Insights CDN door rechtstreeks vanuit de browser te proberen toegang te krijgen tot het CDN-eindpunt (bijvoorbeeld https://js.monitor.azure.com/scripts/b/ai.2.min.js) vanaf een andere locatie dan de waarschijnlijke locatie van uw eindgebruikers vanaf uw eigen ontwikkelcomputer (ervan uitgaande dat uw organisatie dit domein niet heeft geblokkeerd).

Als u bevestigt dat er een storing is, kunt u een nieuw ondersteuningsticket maken.

DE SDK kan niet worden geïnitialiseerd na het laden van het script

Wanneer de SDK niet kan worden geïnitialiseerd, is het <script/>is het gedownload uit de CDN, maar mislukt het tijdens de initialisatie. Dit kan worden veroorzaakt door ontbrekende of ongeldige afhankelijkheden of een vorm van JavaScript-uitzondering.

Het eerste wat u moet controleren is of de SDK is gedownload, als het script NIET is gedownload, is dit scenario niet de oorzaak van de uitzondering voor het laden van de SDK.

Snelle controle: Met behulp van een browser die ontwikkelhulpprogramma's (F12) ondersteunt, valideert u op het netwerktabblad dat het script dat is gedefinieerd in de src configuratie van het codefragment is gedownload met een antwoordcode van 200 (geslaagd) of een 304 (niet gewijzigd). U kunt ook een hulpprogramma zoals Fiddler gebruiken om het netwerkverkeer te controleren.

De onderstaande secties bevatten verschillende rapportageopties. U wordt aangeraden een ondersteuningsticket te maken of een probleem op GitHub aan te brengen.

Basisrapportageregels:

  • Als het probleem alleen van invloed is op een klein aantal gebruikers en een specifieke of subset van browserversies (controleer de details van de gerapporteerde uitzondering), is het waarschijnlijk een probleem met alleen eindgebruikers of omgevingen, waardoor uw toepassing waarschijnlijk extra polyfill implementaties moet bieden. Dien hiervoor een probleem in op GitHub.
  • Als dit probleem van invloed is op uw hele toepassing en al uw gebruikers worden beïnvloed, is dit waarschijnlijk een probleem met betrekking tot de release en moet u daarom een nieuw ondersteuningsticket maken.

JavaScript-uitzonderingen

Eerst kunt u controleren op JavaScript-uitzonderingen, met behulp van een browser die ondersteuning biedt voor ontwikkelhulpprogramma's (F12) de pagina laden en controleren of er uitzonderingen zijn opgetreden.

Als er uitzonderingen worden gerapporteerd in het SDK-script (bijvoorbeeld ai.2.min.js), kan dit erop wijzen dat de configuratie die is doorgegeven aan de SDK onverwachte of ontbrekende vereiste configuratie bevat of dat er een defecte release is geïmplementeerd in de CDN.

Als u wilt controleren op een foutieve configuratie, wijzigt u de configuratie die is doorgegeven aan het fragment (indien niet al), zodat deze alleen uw instrumentatiesleutel als tekenreekswaarde bevat.

Notitie

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

src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
    instrumentationKey: "INSTRUMENTATION_KEY"
}});

Als u deze minimale configuratie gebruikt, ziet u nog steeds een JavaScript-uitzondering in het SDK-script, maakt u een nieuw ondersteuningsticket omdat hiervoor de defecte build moet worden teruggedraaid omdat dit waarschijnlijk een probleem is met een nieuwe geïmplementeerde versie.

Als de uitzondering verdwijnt, wordt het probleem waarschijnlijk veroorzaakt door een niet-overeenkomende of onverwachte waarde. Startmenu uw configuratieopties één voor één toevoegen en testen 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, dient u een probleem in bij GitHub.

Als uw configuratie eerder is geïmplementeerd en werkt maar net deze uitzondering heeft gerapporteerd, kan het een probleem zijn met een nieuwe geïmplementeerde versie, controleert u of deze slechts een kleine set gebruikers/browser beïnvloedt en kunt u een probleem indienen bij GitHub of een nieuw ondersteuningsticket maken.

Console-foutopsporing inschakelen

Ervan uitgaande dat er geen uitzonderingen worden gegenereerd, is het inschakelen van consolefoutopsporing door de instelling toe te voegen aan de loggingLevelConsole configuratie, worden alle initialisatiefouten en waarschuwingen verzonden naar de browserconsole (normaal gesproken beschikbaar via de ontwikkelhulpprogramma's (F12)). Gemelde fouten moeten zelf verklarend zijn en als u meer hulp nodig hebt bij het melden van een probleem op GitHub.

cfg: {
    instrumentationKey: "INSTRUMENTATION_KEY",
    loggingLevelConsole: 2
}});

Notitie

Tijdens de initialisatie voert de SDK enkele basiscontroles uit op bekende belangrijke afhankelijkheden. Als deze niet worden geleverd door de huidige runtime, worden de fouten als waarschuwingsberichten naar de console weergegeven, maar alleen als de loggingLevelConsole status groter is dan nul.

Als het nog steeds niet kan worden geïnitialiseerd, probeert u de enableDebug configuratie-instelling in te schakelen. Hierdoor worden alle interne fouten gegenereerd als een uitzondering (waardoor telemetrie verloren gaat). Omdat dit een enige instelling voor ontwikkelaars is, krijgt deze waarschijnlijk luidruchtig met uitzonderingen die worden gegenereerd als onderdeel van een aantal interne controles. Daarom moet u elke uitzondering controleren om te bepalen welk probleem de SDK veroorzaakt. Gebruik de niet-verkleinde versie van het script (let op de onderstaande extensie is '.js' en niet '.min.js') anders zijn de uitzonderingen onleesbaar.

Waarschuwing

Dit is een instelling voor ontwikkelaars en mag NOOIT worden ingeschakeld in een volledige productieomgeving, omdat u telemetrie verliest.

src: "https://js.monitor.azure.com/scripts/b/ai.2.js",
cfg:{
    instrumentationKey: "INSTRUMENTATION_KEY",
    enableDebug: true
}});

Als dit nog steeds geen inzichten biedt, moet u een probleem op GitHub met de details en een voorbeeldsite als u er een hebt. Neem de browserversie, het besturingssysteem en de JS-frameworkdetails op om het probleem te identificeren.

De JavaScript-CDN van de toepassing Insights is geblokkeerd

Het CDN dat wordt geblokkeerd, is mogelijk wanneer een Toepassing Insights JavaScript SDK-CDN eindpunt is gerapporteerd en/of als onveilig is geïdentificeerd. Wanneer dit gebeurt, wordt het eindpunt openbaar geblokkeerd en beginnen consumenten van deze lijsten alle toegang te blokkeren.

Om dit op te lossen, moet de eigenaar van het CDN-eindpunt werken met de entiteit bloklijst die het eindpunt als onveilig heeft gemarkeerd, zodat het kan worden verwijderd uit de relevante lijst.

Controleer of het CDN-eindpunt is geïdentificeerd als onveilig.

Afhankelijk van de frequentie dat de toepassing, firewall of omgeving hun lokale kopieën van deze lijsten bijwerkt, kan het veel tijd duren en/of handmatige tussenkomst van eindgebruikers of zakelijke IT-afdelingen nodig hebben om een update af te dwingen of de CDN eindpunten expliciet toe te staan om het probleem op te lossen.

Als het CDN-eindpunt als onveilig wordt geïdentificeerd, maakt u een ondersteuningsticket om ervoor te zorgen dat het probleem zo snel mogelijk wordt opgelost.

Toepassing Insights JavaScript-CDN wordt geblokkeerd (door eindgebruiker - geblokkeerd door browser; geïnstalleerde blocker; persoonlijke firewall)

Controleer of uw eindgebruikers het volgende hebben:

  • Een browserinvoegtoepassing geïnstalleerd (meestal een vorm van advertentie, malware of pop-upblokkering).
  • De toepassing is geblokkeerd (of niet toegestaan) Insights CDN eindpunten in hun browser of proxy.
  • Er is een firewallregel geconfigureerd waardoor het CDN domein voor de SDK wordt geblokkeerd (of dat de DNS-vermelding niet wordt omgezet).

Als ze een van deze opties hebben geconfigureerd, moet u ermee werken (of documentatie opgeven) om de CDN eindpunten toe te staan.

Het is mogelijk dat de invoegtoepassing die ze hebben geïnstalleerd, gebruikmaakt van de openbare blokkeringslijst. Als dat niet het geval is, is het waarschijnlijk een andere handmatig geconfigureerde oplossing of wordt er een bloklijst voor privédomeinen gebruikt.

Uitzonderingen toevoegen voor CDN eindpunten

Werk samen met uw eindgebruikers of geef documentatie waarin ze hen informeren dat scripts van de toepassing Insights CDN eindpunten moeten worden gedownload door ze op te slaan in de invoegtoepassing of firewallregeluitzonderingslijst van hun browser (zal variëren op basis van de omgeving van de eindgebruiker).

Hier volgt een voorbeeld van het configureren van Chrome om toegang tot websites toe te staan of te blokkeren.

Toepassings-Insights CDN wordt geblokkeerd (door bedrijfsfirewall)

Als uw eindgebruikers zich in een bedrijfsnetwerk bevinden, is het waarschijnlijk hun firewalloplossing en dat hun IT-afdeling een vorm van internetfiltersysteem heeft geïmplementeerd. In dit geval moet u met hen samenwerken om de benodigde regels voor uw eindgebruikers toe te staan.

Uitzonderingen toevoegen voor CDN eindpunten voor bedrijven

Dit is vergelijkbaar met het toevoegen van uitzonderingen voor eindgebruikers, maar u moet samenwerken met de IT-afdeling van het bedrijf om ervoor te zorgen dat de toepassings-Insights CDN-eindpunten worden gedownload door ze op te slaan (of te verwijderen) in een domeinblok- of acceptatieservices.

Waarschuwing

Als uw zakelijke gebruiker een privécloud gebruikt en ze geen enkele vorm van uitzondering kunnen inschakelen om hun interne gebruikers openbare toegang te bieden voor de CDN-eindpunten, moet u de NPM-pakketten van Application Insights gebruiken of de Application Insights SDK hosten op uw eigen CDN.

Aanvullende probleemoplossing voor geblokkeerde CDN

Notitie

Als uw gebruikers een privécloud gebruiken en ze geen toegang hebben tot het openbare internet, moet u de SDK op uw eigen CDN hosten of NPM-pakketten gebruiken.

Host de SDK op uw eigen CDN

In plaats van uw eindgebruikers de Application Insights SDK te downloaden uit de openbare CDN kunt u de Application Insights SDK hosten vanaf uw eigen CDN-eindpunt. Het wordt aanbevolen om een specifieke versie (ai.2.#.#.min.js) te gebruiken, zodat u gemakkelijker kunt identificeren welke versie u gebruikt. Werk het ook regelmatig bij naar de huidige versie (ai.2.min.js), zodat u eventuele oplossingen voor fouten en nieuwe functies kunt gebruiken die beschikbaar komen.

NPM-pakketten gebruiken om de Application Insight SDK in te sluiten

In plaats van het codefragment en de openbare CDN eindpunten te gebruiken, kunt u de NPM-pakketten gebruiken om de SDK op te nemen als onderdeel van uw eigen JavaScript-bestanden. De SDK wordt slechts een ander pakket in uw eigen scripts.

Notitie

Het wordt aanbevolen om bij het gebruik van NPM-pakketten ook een vorm van JavaScript-bundelaar te gebruiken om te helpen bij het splitsen en minificeren van code.

Net als bij het codefragment is het ook mogelijk dat uw eigen scripts (met of zonder het gebruik van de SDK NPM-pakketten) worden beïnvloed door dezelfde blokkeringsproblemen die hier worden vermeld, dus afhankelijk van uw toepassing, uw gebruikers en uw framework, kunt u overwegen iets te implementeren dat vergelijkbaar is met de logica in het fragment om deze problemen te detecteren en te rapporteren.

Volgende stappen