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 din app, eller innkommende til lumi-api.
Sjekk:
Din app har outbound-regel:
yamlspec: accessPolicy: outbound: rules: - application: lumi-api namespace: team-esyfoLumi API har inbound-regel for din app:
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):
Miljøvariabler er satt i NAIS-manifest:
yamlspec: env: - name: LUMI_API_HOST value: http://lumi-api.team-esyfo
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
- Branching — avansert flyt
- Lagring — lagring og cooldown
- Opprett en issue — rapporter feil
