Feilsøking
Vanlige problemer og løsninger for Lumi-widgeten.
Survey dukker ikke opp
Symptom: Komponenten er rendret, men ingenting vises på skjermen.
Sjekk 1: initialOpen er satt til false
Widgeten starter som standard åpen (initialOpen: true). Hvis du har satt initialOpen: false, vises bare den minimerte knappen.
// ❌ Starter minimert
<LumiSurveyDock behavior={{ initialOpen: false }} />
// ✅ Starter åpen (default)
<LumiSurveyDock behavior={{ initialOpen: true }} />Sjekk 2: Dismissed-tilstand fra tidligere visning
Widgeten husker at brukeren lukket den. Under utvikling kan dette persistere mellom sidelaster.
Løsning for utvikling:
- Bruk
storageStrategy: "none"for å deaktivere persistering - Eller tøm localStorage/cookies og last siden på nytt
// For utvikling/testing
<LumiSurveyDock behavior={{ storageStrategy: "none" }} />Sjekk 3: Cooldown-perioden er aktiv
Etter at brukeren lukker surveyen, er default cooldown 30 dager. Under utvikling kan du sette den lavere:
<LumiSurveyDock behavior={{ dismissCooldownDays: 0 }} />Sjekk 4: CSS mangler
Uten CSS-import kan widgeten rendre med usynlige elementer. Se Layout virker tom under.
403 fra API
Symptom: transport.submit feiler med HTTP 403.
Årsak: NAIS access policies er ikke riktig konfigurert — enten utgående fra appen din, eller innkommende til Lumi-mottakeren.
Sjekk:
Finn riktig mottaker. Bruk
lumi-apifor TokenX, produksjon og AzureAD-apper mednav.no-tenant. Bruklumi-submission-proxybare for AzureAD i dev når appen hartrygdeetaten.no-tenant. Se den komplette rutetabellen.Din app har outbound-regel mot denne mottakeren. For direkte kall til
lumi-api:yamlspec: accessPolicy: outbound: rules: - application: lumi-api namespace: team-esyfoFor AzureAD i dev med
trygdeetaten.no-tenant:yamlspec: accessPolicy: outbound: rules: - application: lumi-submission-proxy namespace: team-esyfoDen samme mottakeren har inbound-regel for appen din. Team eSyfo vedlikeholder denne regelen etter en tilgangsforespørsel:
yamlspec: accessPolicy: inbound: rules: - application: din-app namespace: ditt-teamToken exchange er korrekt konfigurert — sjekk at du bruker riktig endepunkt:
- Sluttbruker (TokenX):
POST /api/tokenx/v1/feedback - Intern (AzureAD):
POST /api/azure/v1/feedback
- Sluttbruker (TokenX):
Host og audience peker på samme mottaker som access policy. Direkte kall bruker
http://lumi-api.team-esyfo; AzureAD fratrygdeetaten.noi dev brukerhttp://lumi-submission-proxy.team-esyfo. Se miljøvariablene for alle kombinasjoner.
401 eller 404 fra API
Symptom: transport.submit feiler med HTTP 401 eller 404.
- 401 Unauthorized betyr vanligvis at tokenet ikke har issueren som endepunktet forventer. TokenX-token skal sendes til
/api/tokenx/v1/feedback, mens AzureAD-token skal sendes til/api/azure/v1/feedback. - 404 Not Found betyr vanligvis at host og sti ikke passer sammen. Dette skjer for eksempel hvis
/api/tokenx/v1/feedbacksendes tillumi-submission-proxy, som bare eksponerer AzureAD-endepunktet.
Sjekk:
- Velg miljøblokken som passer auth-type, miljø og Azure-tenant i backend-guiden.
- Kopier
LUMI_API_HOST,LUMI_AUDIENCEogLUMI_FEEDBACK_PATHfra den samme blokken. Ikke bland verdier fra ulike blokker. - Verifiser at token exchange bruker
LUMI_AUDIENCE, og at requesten sendes til${LUMI_API_HOST}${LUMI_FEEDBACK_PATH}.
Hvis responsen er 403, er token og rute normalt funnet, men access policy mangler. Følg 403-sjekklisten.
Ingen data i dashboard
Symptom: Innsending ser ut til å fungere (ingen feil), men data dukker ikke opp i dashboardet.
Sjekk:
Sender du riktig payload? Backend skal videresende
submission.transportPayload— ikke hele submission-objektet.ts// ✅ Riktig body: JSON.stringify(submission.transportPayload) // ❌ Feil body: JSON.stringify(submission)Riktig endepunkt? Sjekk at du treffer riktig Lumi API-endepunkt:
- Sluttbruker:
POST /api/tokenx/v1/feedback - Intern:
POST /api/azure/v1/feedback
- Sluttbruker:
Sjekk nettverksfanen i DevTools for å verifisere at requesten faktisk sendes og får 2xx-respons.
Verifiser
surveyId— dashboardet filtrerer påsurveyId. Sjekk at du leter under riktig ID.
Layout virker tom
Symptom: Widgeten vises, men uten styling — ingen farger, rar layout, elementer overlapper.
Årsak: Manglende CSS-import. Begge er påkrevd:
import "@navikt/ds-css"; // Aksel base-styles
import "@navikt/lumi-survey/styles.css"; // Lumi widget-stylesSjekk import-rekkefølge
@navikt/ds-css bør importeres før @navikt/lumi-survey/styles.css. I de fleste bundlere spiller rekkefølgen i import-statements rolle for CSS-spesifisitet.
Dismissed-tilstand persisteres ikke
Symptom: Brukeren lukker surveyen, men den dukker opp igjen ved neste sidelast. Typisk på interne flater (Modia, fagsystemer).
Årsak: Default storage-strategi er consent, som krever Nav-dekoratørens consent-API (window.webStorageController). Interne flater har vanligvis ikke denne.
Løsning:
<LumiSurveyDock
behavior={{ storageStrategy: "localStorage" }}
/>Se Lagring for full oversikt over lagringsstrategier.
Feilsøk med events
Du kan lytte på onDismissalPersistFailed for å oppdage dette:
<LumiSurveyDock
events={{
onDismissalPersistFailed: (cause) => {
console.warn("Lagring feilet:", cause);
},
}}
/>Validering feiler uventet
Symptom: Brukeren får valideringsfeil selv om de har svart.
Sjekk:
- Har du
required: truepå spørsmål som er skjult medvisibleIf? Skjulte spørsmål hoppes over i validering, men dobbeltsjekk at betingelsen fungerer som forventet. - Bruk
onValidationFailedfor å se hvilke spørsmål som mangler svar:
<LumiSurveyDock
events={{
onValidationFailed: (missing) => {
console.log("Mangler svar:", missing);
},
}}
/>Trenger du mer hjelp?
Spør i #lumi på Slack — vi hjelper gjerne!
Du kan også sjekke disse sidene:
- Styling — styling-problemer
- Props-referanse — alle props
- Vis bare relevante spørsmål — betinget flyt
- Lagring — lagring og cooldown
- Opprett en issue — rapporter feil
