Skip to main content
Een geminificeerd JavaScript-bestand kan veel regels broncode op één regel zetten. Een stackframe uit dat bestand wijst naar een gegenereerde regel en kolom. Een source map verbindt die positie met het oorspronkelijke bestand, de regel en de kolom. Deze handleiding gebruikt de Vite-plug-in in @logbrew/sdk 0.1.28. Je hebt een Vite-app nodig, toegang tot de build-uitvoer ervan en het recht om een projectsleutel te maken. Zie Apple-crashes en vastlopers voor debugbestanden van Apple.

De build en de events bij elkaar houden

Gebruik hetzelfde project en dezelfde release, omgeving en service voor de upload en voor de runtime-events van de app. Zie Releases voor versienamen. Deze handleiding gebruikt web@1.2.3, staging en checkout-web. Wijzig de release als de gebouwde code verandert. Upload de voorbereide build en deploy daarna precies die build. Bouw niet opnieuw en wijzig het JavaScript niet na de upload.

De Vite-plug-in toevoegen

Installeer de SDK in de map van de app:
Voeg de plug-in toe aan vite.config.js. Laat je andere plug-ins en build-instellingen staan. Vervang het project-ID:
minifiedPathPrefix is de gedeployde URL van de buildmap. De plug-in voegt daar het pad van elk bestand in die map aan toe. dist/assets/app.js wordt bijvoorbeeld https://app.example.com/assets/app.js. Serveer je de build onder /web? Neem /web dan op in het voorvoegsel. Voeg /assets niet toe aan het voorvoegsel. Zonder optie upload verzendt de plug-in niets naar LogBrew. De plug-in doet ook dit:
  • Zet build.sourcemap op "hidden" als je dat niet zelf instelt. Heb je het op false gezet? Wijzig het dan in "hidden".
  • Behoudt functienamen als je geen opties voor de minifier instelt. Stel je die wel zelf in? Behoud de namen dan daar.
Verborgen source maps blijven als gewone bestanden in de build-uitvoer staan. Er geldt geen toegangscontrole voor. Gebruik geen inline source maps. De plug-in accepteert geen map in het JavaScript-bestand zelf.

Lokaal bouwen en controleren

Voer de productiebuild uit:
De plug-in geeft elk JavaScript-bestand en de bijbehorende source map hetzelfde Debug ID. De plug-in verwijdert ingebedde sourcesContent en het lokale pad van de app-root. Daarna schrijft de plug-in dist/logbrew-release-artifacts.json. Open het manifest. Controleer of validation.status gelijk is aan ready en of het manifest de bestanden en gedeployde URL’s van deze build bevat. Verborgen maps geven de waarschuwing sourceMappingURL comment missing. Die waarschuwing is normaal. Upload geen map met een privépad of met broncode die je niet wilt delen. De upload bevat ook het gecompileerde JavaScript, dus houd geheimen buiten de app-bundel. Controleer de upload lokaal. Deze opdracht verzendt geen request en heeft geen sleutel nodig:
Ga alleen verder als de opdracht stopt met code 0 en "status": "dry_run" toont. Dit controleert de lokale bestanden en het manifest. De server wordt niet getest. Gebruikt je build een andere uitvoermap? Wijzig dan beide paden. Wil je controleren of de omzetting werkt? Start de gebouwde app en kopieer één gegenereerd stackframe met het bestand, de regel en de kolom:
Controleer of het resultaat "status": "resolved" bevat. Het object original toont het bronbestand, de regel en de kolom. Deze opdracht draait lokaal en uploadt niets.

Een artefactsleutel maken

Log in met de LogBrew CLI. Zoek het project-ID op:
Maak een artefactsleutel voor het project. Gebruik een nieuw bestandspad in een map die alleen de eigenaar kan openen:
Ga pas verder als de opdracht is geslaagd. Is het resultaat onduidelijk? Voer dan dezelfde opdracht opnieuw uit met dezelfde argumenten. Gebruik --abandon-retry niet. Een artefactsleutel is projectgebonden en kan alleen schrijven. De sleutel uploadt source maps en debugbestanden. Hij kan geen telemetrie verzenden en geen metadata van artefacten lezen. Gebruik geen toegangsgegevens van een account of een runtime-SDK-sleutel in plaats van deze sleutel. Sla de sleutel op als LOGBREW_RELEASE_ARTIFACT_TOKEN bij de secrets van je buildomgeving. Toon of commit de sleutel niet. Zet hem niet in een variabele die zichtbaar is voor de client, zoals VITE_* of EXPO_PUBLIC_*. Stel de variabele in binnen het proces dat de upload uitvoert. De helper leest geen .env-bestanden. Vite laadt ze niet in process.env tijdens het evalueren van de configuratie.

De voorbereide build uploaden

Gebruik dezelfde gecontroleerde bestanden en hetzelfde manifest. Deze opdracht verzendt de upload naar LogBrew:
"status": "uploaded" toont dat LogBrew de upload heeft geaccepteerd. Stopt de opdracht met een fout? Stop dan en gebruik de tabel hieronder. Bij een netwerkfout, 408, 429 of een response met 5xx probeert de helper het maximaal 2 keer opnieuw. Elke keer verzendt de helper dezelfde voorbereide bestanden. Gebruik --max-retries om het aantal te wijzigen. Werkt de handmatige upload? Dan kun je in plaats daarvan tijdens de Vite-build uploaden. Voeg deze optie toe aan de configuratie van de plug-in:
Gebruik één uploadmethode. De plug-in stopt de build bij een fout tijdens het voorbereiden of uploaden. Voeg dryRun: true toe om te testen zonder upload. De plug-in verwijdert geen source maps uit de uitvoermap. Deploy geen .map-bestanden of het manifest naar de openbare website of het CDN. Wil je een frame uit een vastgelegd issue omzetten? Voer symbolicate-js met dat frame uit op dezelfde voorbereide build.

Een nieuw issue lezen

Deploy dezelfde voorbereide build naar de testomgeving. Veroorzaak één veilige testfout via de weg waarlangs je app issues vastlegt. Verzend voor deze test geen gebruikersinvoer, toegangsgegevens of ruwe stack. Zoek het nieuwe issue op met dezelfde project- en buildcontext:
Kopieer het issue-ID uit het resultaat. Lees het laatste voorval:
Lees eerst het tijdstip van het event, het project, de service, de omgeving en de release. Lees daarna event.stack_frames. Een frame met source: "symbolicated" heeft het oorspronkelijke bestand, de regel en de kolom uit je upload. Een frame met source: "captured" heeft de locatie die de app heeft verzonden. logbrew read issue "<issue_id>" --json geeft ook een object symbolication terug. Elk frame daarin heeft een status: resolved, artifact_not_found, source_not_resolved, invalid_metadata of unavailable. Alleen een frame met resolved heeft een oorspronkelijke locatie. LogBrew zet frames om op het moment dat je het issue leest. Een upload na de fout kan ook een eerder event met hetzelfde Debug ID omzetten. Een omgezet frame wijst naar code om te onderzoeken. Het toont niet wat de fout heeft veroorzaakt. Zie Een issue onderzoeken voor de andere velden.

Herstellen na een mislukte controle

Houd bronbestanden, sleutels en privépaden buiten supportberichten. Zie Problemen oplossen en API-fouten.