# Feilsøking

> Feilene som oftest oppstår ved integrering av klienten – innebygd utsjekking som faller tilbake til et popup-vindu, blokkerte vinduer, manglende beholdere og advarsler i konsollen.

Klienten logger alt den rapporterer, til nettleserkonsollen, med prefikset `[Entase API]`. Åpne konsollen først.

## Utsjekkingen åpnes som et popup-vindu i stedet for et panel

De vanligste årsakene, i rekkefølgen det er verdt å kontrollere:

1. **Domenet er ikke en klarert opprinnelse.** Legg det til i Innstillinger → Integrasjoner, og sørg for at `www.`-prefikset samsvarer med det nettstedet ditt faktisk bruker – se [Integrasjoner og tilpasning av utsjekking](/organizers/settings/integrations-and-checkout-customization.md).
2. **Siden leveres ikke over HTTPS.** Innebygd utsjekking brukes aldri på en usikker side.
3. **Ingen publiserbar nøkkel.** Uten `pk` kan ikke klienten kontrollere om innebygd utsjekking er tillatt, så den bruker fortsatt et popup-vindu.
4. **`book()` ble kjørt for tidlig.** Tillatelseskontrollen er asynkron, og modusen er popup-vindu til den har svart. En utsjekking som åpnes automatisk når siden lastes inn, kan komme før kontrollen er ferdig – se [Utsjekkingsmoduser](/developers/js-client/checkout-modes.md).
5. **`connect-src` blokkeres av Content Security Policy**, slik at kontrollen aldri fullføres. Konsollen viser den blokkerte forespørselen.

`entase.getCheckoutMode()` rapporterer den valgte modusen og er den raskeste måten å skille konfigurasjonsproblemer fra tidsproblemer på.

## "Pane checkout mode enabled for localhost"

Forventet under utvikling. Klienten antar panelmodus på `localhost` og `127.0.0.1`, slik at du kan bygge mot det innebygde oppsettet, og viser en advarsel fordi denne antakelsen ikke sier noe om produksjon. Legg til det faktiske domenet ditt i klarerte opprinnelser før du lanserer.

## Popup-vinduet blokkeres

Nettlesere tillater bare at et vindu åpnes under en brukerhandling. Kall `book()` synkront inne i klikkbehandleren, ikke etter en `await`, en `fetch` eller en `setTimeout`. Se [Utsjekkingsmoduser](/developers/js-client/checkout-modes.md).

## Panelet åpnes tomt

Utsjekkings-iframe-en ble blokkert. Tillat `https://www.entase.com` i `frame-src`-direktivet i Content Security Policy – se [Installere klienten](/developers/js-client/installing-the-client.md).

## "Entase is not defined"

Skriptet var ikke ferdig lastet da koden din ble kjørt. Dette skjer når `client.js` lastes med `async` eller `defer`, eller plasseres etter skriptet som bruker det. Vent på hendelsen `entase:ready` – se [Installere klienten](/developers/js-client/installing-the-client.md).

## "Trying to book an event after the Client has been destroyed"

`destroy()` ble kalt på instansen, og den kan ikke lenger brukes. I en enkeltsideapplikasjon betyr dette vanligvis at en komponent avsluttet klienten sin mens en delt referanse fortsatt var på plass. Opprett en ny instans for den nye visningen.

## "Entase frame initialization failed. Container not found."

Gjelder bare innebyggingswidgeten. `obj`-koden i konfigurasjonen samsvarer ikke med noe element på siden. Beholderens id må være `entase_` etterfulgt av den samme koden, og den må finnes i DOM-en før widgeten initialiseres – kontroller om det er en skrivefeil, eller om en beholder gjengis senere av dine egne skript.

## Bare den siste hendelseslytteren kjører

`on()` beholder ett tilbakekall per hendelsesnavn, og registrering av et nytt erstatter det første. Registrer én gang, og fordel deretter videre fra innsiden av dette tilbakekallet – se [Hendelser](/developers/js-client/events.md).

## Popup-vinduet åpnes på feil skjerm

Midtpunktet beregnes når instansen opprettes og oppdateres ikke når besøkende flytter nettleservinduet. Beregn det på nytt før bestilling med `setTopWindowCenter()` – se [Metodereferanse](/developers/js-client/methods.md).

## Sporingsparametere mangler fra bestillinger

Den frittstående klienten leser ikke nettadressen til siden din. Videresend parameterne selv til `tprm` – se [Sporing og samtykke](/developers/js-client/tracking-and-consent.md). Merk at `setTracking()` erstatter hele objektet i stedet for å slå det sammen med det, slik at et senere kall kan fjerne tidligere parametere uten varsel.
