Frontend for IA rådgivere
Dette let deg køyre opp frontend lokalt med alt av avhengigheitene som trengst. Dette vert orkestrert av docker-compose.
- backend: lydia-api
- postgres
- kafka
- wonderwall
- mockOAuth2-server
Lag token på github med packages:read rettigheter.
Legg så dette inn i ~/.npmrc slik som dette:
//npm.pkg.github.com/:_authToken=<generert token med packages:read rettigheter>
Husk å logge på gcp med gcloud auth login --update-adc
Sjekk om du har postgresql-klient ved å køyre
psql --version
Installer ein postgresql-klient, for eksempel ved å gjere
brew install libpq
Legg så til psql i PATH. Du vil få instruksjonar på dette frå brew, og det ser litt sånn ut:
If you need to have libpq first in your PATH, run:
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc
Sjekk at du har colima colima version
Om du ikkje har colima, køyr brew install colima
Sjekk at du har docker docker -v
Om du ikkje har docker, køyr brew install docker
Vi skal leggje til linja 127.0.0.1 host.docker.internal
i fila /etc/hosts
i rota av datamaskina di.
Da vil nettlesaren automatisk fange opp wonderwall og mock-oauth2-server, som da vil resolve det til localhost.
Dette kan du til dømes gjere ved å skrive sudo vi /etc/hosts
i terminalen og så
leggje til 127.0.0.1 host.docker.internal
nedst på ei ega linje.
Sørg for at du har skrudd på administrator-rettar for brukaren din (privileges.app på mac).
gcloud auth configure-docker europe-north1-docker.pkg.dev
gcloud auth login --update-adc
gcloud components install docker-credential-gcr
Pass på at du har ein køyrande docker-instans.
For Colima gjer du dette ved å køyre colima status
og eventuelt colima start
Om du bruker Colima treng du også å køyre denne for å få ting til å fungere. Hugs å gjer brukaren din admin-rettar først.
sudo rm -rf /var/run/docker.sock && sudo ln -s /Users/$(whoami)/.colima/docker.sock /var/run/docker.sock
Når du har docker på plass kan du køyre
./run.sh -if
i rotmappa. Dette startar server og frontend med sine avhengigheiter.
Besøk deretter http://localhost:2222 i din favorittbrowser.
Skjemaet som dukker opp her gjev deg høve til å endre kva rettar testbrukaren din har. I dei fleste tilfelle kan du skrive inn noko tilfeldig tekst og trykke "SIGN-IN".
docker-compose down -v
(-v sletter volumes)
Om du ikkje gjer dette risikerer du trøbbel neste gong. Det betyr også: om ting ikkje funker neste gong - start med docker-compose down
i alle repo ;)
For å tvinge nedlastning av nye images (feks hvis det har kommet ett nytt backend image siden sist kjøring) kan man kjøre:
docker-compose down && docker-compose build --pull
Nokre gonger vil ikkje lydia-api-imaget oppdatere seg. Dette kan du sjekke ved å gjere docker images
og sjekke opprettingsdatoen for ghcr.io/navikt/lydia-api. For å slette imaget gjer du docker rmi <IMAGE ID>
. IMAGE ID finn du i tabellen frå docker images
.
- Gå til rett branch i backend.
./gradlew build -x test
(-x test
gjer at vi slepp å vente på at alle testane skal køyre)docker build . -t <navn-på-nytt-image>
- Gå til fila
docker-compose.yaml
i frontend. - Endre linja som er
backend: image: <her er det eit image>
til å bruke<navn-på-nytt-image>
i staden - Køyr
./run.sh
fra frontend - Profit 🎉🎉🎉
Hugs å ikkje committe endringa du har gjort i docker-compose.yaml
.
For å raskt kunne teste at ein komponent ser ut som den skal har vi laga stories i Storybook. Dette gjer det mogleg å sjå komponenten i ein nøytral eller bestemt kontekst.
For å køyre opp dette gjer du
npm run storybook
i ./client/
Då kan du nå Storybook i ein nettlesar på adressa localhost:6006.
// TODO skriv noko om 'frackend' og deploy til NAIS
Sjekk https://github.com/navikt/lydia-api#koble-til-postgresql-lokalt-via-docker-compose-oppsett
Dato: 2023-03-23
Utviklar: Ingrid
Case:
Frontend og backend køyrer fint. Frontend får opp oAuth. Backend responderer på localhost:8080/internal/isAlive. Etter innlogging får du feilmeldingsside med beskjed om "trykk her for å logge inn på nytt".
Feilsøking
Sjekk docker logs på frackend `docker ps` Kopier CONTAINER ID for lydia-radgiver-frontend-frackend `docker logs [CONTAINER ID HERE]` Sjekk om du får feilmeldingar her.Fordi ein kan (og i tilfelle docker-imaget for frackend er gamalt)
docker images
, hent ut id for lydia-radgiver-frontend-frackend
docker rmi [CONTAINER ID HERE]
Gjer /run.sh
på nytt
Etter dette fungerte ting på magisk vis 2023-03-23.
Andre ting vi prøvde som kanskje/kanskje ikkje hjalp
- installere dependencies i /server
- køyre
npm run dev
i /server (etter at docker-containarar var stoppa) for å sjå feilmeldinger litt betre - docker logs
Dato: 2023-06-19
Utviklar: Ingrid og Thomas
Case:
Får til å køyre opp frontend med /run.sh, men etter innlogging i OAuth får vi feilmelding i frontend og i terminalen.
Frontend:
Noe gikk feil ved innlasting av siden.
Du kan prøve å logge inn på nytt ved å trykke på denne lenken.
Terminal:
10:22:57 AM [vite] http proxy error at /innloggetAnsatt:
Error: connect ECONNREFUSED ::1:3000
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)
Ved ./run.sh fekk Thomas ein ei feilmelding om at ein port allereie var allokkert. Dette er truleg rota til problemet.
Feilsøking
- Ta ned alle containarar og volumes:
docker-compose down --remove-orphans -v
- Fjern dockar-containarar. Ingrid fjerna lydia-api + lydia-radgiver-frontend-frackend, Thomas fjerna alle. Å fjerne alle tek litt lengre tid å køyre opp, men då funka localhost:2222 med ein gong etterpå, hos Ingrid funka ting etter at ho hadde hatt lunsj.
./run.sh -i
(eller./run.sh -cfi
om du vil gjere dei to stega over ein ekstra gong)- 🎉🎉🎉
Dato: 2023-06-20
Utviklar: Ingrid, (Christian og Per-Christian er med på feilsøking)
Case:
Får til å køyre opp frontend med /run.sh, men etter innlogging i OAuth får vi feilmelding i frontend og i terminalen.
Frontend:
Noe gikk feil ved innlasting av siden.
Du kan prøve å logge inn på nytt ved å trykke på denne lenken.
Terminal:
10:22:57 AM [vite] http proxy error at /innloggetAnsatt:
Error: connect ECONNREFUSED ::1:3000
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)
Får ikkje feilmeldingar ved køyring av ./run.sh før vi kallar ting frå frontend.
Frå Node v17 vert ikkje IP-adresser lengre sortert med IPv4 fyrst. Dette gjer at datamaskina ikkje nødvendigvis finn localhost 127.0.0.1 (IPv4) før localhost ::1 (IPv6). Lima, som Colima er bygga på, støttar ikkje IPv6 enno. Det betyr:
Når Colima får ::1 som localhost klikkar ting.
Hardkode 127.0.0.1
som localhost-adresse i vite.config.ts
i staden for å berre skrive localhost
.
Feilsøking
Vi prøvde mykje greier som vi skildrar lengre nede, men fann til slutt problemet ved å google feilmeldinga frå terminalen.
Dette er artiklane vi fann som forklarte problemet vårt:
Vi legg med ei oppsummering av ting vi prøvde før vi googla som ikkje fungerte, som ei påminning om å spørje internett før du tenker sjølv i fire timar.
- Ta ned alle containarar og volumes:
docker-compose down --remove-orphans -v
- Køyr opp med
docker-compose up
i root ognpm run dev
i /client for meir gjennomsiktig logging. - Får feilmeldingar om "proxy error at /innloggetAnsatt". At noko skjer på :3000 tyder på at vi ikkje når frackend.
- (Ein gong rundt her lurer Per-Christian på om IPv6 kan vere problemet, vi burde fylgd dette sporet allereie no.)
- Sjekkar logs på frackend-container:
docker logs [container id]
. Dei er normale (typ 10-ish linjer) - Sjekkar logs på lydia-api, får masse vanleg ræl.
- Sjekkar isalive på dei ulike portane: http://localhost:3000/internal/isalive (frackend), http://localhost:8080/internal/isalive (backend)
No veit vi:
- wonderwall er oppe (fordi vi får innloggingsprompt og svar på 2222)
- frontend er oppe (fordi vi kan sjå feilmelding i nettlesaren)
- frackend er oppe (isalive 3000)
- backend er oppe (isalive 8080)
Meir feilsøking:
- inspiserar request i Networks i devtools i nettlesar. Får "500 internal server error" på /innloggetAnsatt.
- Køyrar
./run.sh -cif
. Fårpsql:/tmp/db_script.sql:4606: ERROR: role "cloudsqliamuser" does not exist
i tillegg til den vanlegerole "testuser" does not exist
. Framleis feil i innlogging. Vi trur vi får denne fordi vi sletta volumes i -c-steget i run.sh
Vi byrjar å bli svoltne, så då prøver vi drastiske ting.
- Fjerne alle "dangeling" images:
dc down
, sådocker image prune
. Info om kva image prune gjer. Dette fjerna tydelegvis 3-ish greier, mellom anna containaren "none". - Fjernar resten av images:
dc down
, sådocker image prune -a
. Fjernar dangling images + alle utan minst ein container knytt til seg. Output:Total reclaimed space: 5.966GB
. docker images
for å sjå om alt er borte../run.sh
på nytt medan vi et lunsj. Dette hjalp heller ikkje. Kult. Vi har sånn 7 docker-images no. -Vi prøverdocker-network prune
.docker network ls
listar nettverk. Vi hadde 3 stk. Etterdocker network prune
har vi framleis 3 stk.- Vi stoppar Alt:
docker-compose down
, sådocker system prune -a
. Dette fjernar images, alle stoppa containarar, networks og volumes.Total reclaimed space: 7.259GB
. Kult. - Vi restartar terminalen, i tilfelle det hjelp på noko.
docker-compose down
fyrst. - Googlar feilmelding: nodejs/node#40702. Finn ut kva problemet var. Tek ein oppgitt pause.
- Bytta ut localhost i vite.config.ts med 127.0.0.1. Då funka ting etter restart av run.sh.
- 🎉🎉🎉
- Å google ting burde ikkje vere steg 16, men kanskje sånn mellom 1 og 3 ein stad.
- Lytt til Erfarne Fjellfolk når dei nevnar IPv6.
- Om ei adresse ser litt rar ut – søk den opp med ein gong. ::1:3000 var jo litt rart, og ville nok leidd oss på rett veg.
- Når feilmeldinga i terminal seier noko om TCP har kanskje feilen noko med nettverk å gjere.
- Det er fint å notere feilsøkingssteg, då har vi betre oversikt over kva vi har gjort.
- Guide frå tidlegare buggar var nyttig i å finne ein stad å starte feilsøkinga, sjølv om vi ikkje burde starta der.
Dato: 2023-06-20
Utvikler: Per-Christian
Case: får feilmelding Ukjent feil: Fetch not defined
Oppdater til node 18
Om du ikke har nvm sjekk ut [denne linken](https://medium.com/devops-techable/how-to-install-nvm-node-version-manager-on-macos-with-homebrew-1bc10626181) først.nvm install 18 --latest-npm
nvm alias default 18
nvm use 18
#evt:
nvm install 18 --default --latest-npm
nvm use 18
#sjekk med:
node -v
Kjør npm install på nytt i både server og client
cd client
npm install
cd ../server
npm install
Stop docker images og slett frackend imaget
docker-compose down
docker images | grep frackend
docker rmi [image id]
run.sh -cfi
- Profit!
Dato: 2023-08-07 Utviklar: Ingrid
Case: Får timeout på api-kall og beskjed om feil i tilkopling til proxy. Det er fyrste dag etter sommarferien, backend hadde 44 commits, frontend 4, sidan sist eg pulla.
Feilsøking
Det er sannsynlegvis lenge sidan sist nokon prøvde å køyre opp Fia lokalt frå frontend, så eg mistenker feilen handlar om ei endring i backend som frontend ikkje har fått med seg.
- får ikkje tak i filterverdiar fordi timeout(504): GET http://localhost:2222/api/sykefraversstatistikk/filterverdier
- også timeout på http://localhost:2222/api/sykefraversstatistikk/publiseringsinfo
- Har også (forhåpentlegvis ikkje relaterte) feilmeldingar om at sida ikkje liker å skulle vise feilmelding-banner samstundes som den skal vise "ny statistikk publiseres"-banner
- Andre timeouts: GET http://localhost:2222/api/sykefraversstatistikk og GET http://localhost:2222/api/sykefraversstatistikk/antallTreff, sistnemnde får feilmeldingbanneret.
-
./run.sh -cfi
-
Sletta images som er relaterte
-
Dobbeltsjekka at vi bruker same $DB_DUMP i backend og frontend
-
Sjekka for feilmeldingar etter ./run.sh
-
Køyrer
pus
i terminal (docker ps
), ser at lydia-api står som "restarting". Det pleier sjeldan vere bra. -
(Har også "ReferenceError: utilsService is not defined" i frontend-konsollen)
-
Er på naisdevice, har oppdatert brew, har pulla nyaste frontend (og backend)
-
Køyrer opp med
dc up
ognpm run dev
i client. Får då feilmelding i terminal for docker:lydia-radgiver-frontend-frackend-1 | [HPM] Error occurred while proxying request 127.0.0.1:3000/sykefraversstatistikk/publiseringsinfo to http://backend:8080/ [ENOTFOUND] (https://nodejs.org/api/errors.html#errors_common_system_errors)
-
Så kom det (kanskje?) gull:
lydia-radgiver-frontend-backend-1 exited with code 1
lydia-radgiver-frontend-backend-1 | Picked up JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
lydia-radgiver-frontend-backend-1 | Listening for transport dt_socket at address: 5005
lydia-radgiver-frontend-backend-1 | Exception in thread "main"
lydia-radgiver-frontend-backend-1 | java.lang.RuntimeException: Missing required variable STATISTIKK_METADATA_VIRKSOMHET_TOPIC
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.NaisEnvironmentKt.getEnvVar(NaisEnvironment.kt:155)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.NaisEnvironmentKt.getEnvVar$default(NaisEnvironment.kt:154)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.Kafka.<init>(NaisEnvironment.kt:83)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.NaisEnvironment.<init>(NaisEnvironment.kt:14)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.AppKt.startLydiaBackend(App.kt:69)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.AppKt.main(App.kt:65)
lydia-radgiver-frontend-backend-1 | at no.nav.lydia.AppKt.main(App.kt)
lydia-radgiver-frontend-backend-1 exited with code 1
Legg til STATISTIKK_METADATA_VIRKSOMHET_TOPIC
i docker-compose.yaml
, hentar verdiar frå backend. Køyrer opp på nytt med ./run.sh -cfi
Denne gongen får eg feilmelding om STATISTIKK_SEKTOR_TOPIC
etter å ha venta litt. Eg trur eg ser mønsteret.
Løysing:
Leggje inn alle manglande kafka-topics i docker-compose.yaml
. Hentar verdiar frå nais.yaml
i backend (lydia-api).
Lærdom:
- Framleis fint å køyre opp ting med
dc up
+npm run dev
, då får ein betre feilmeldingar. - Det er lurt å la ting køyre ein stund etter at du har framprovosert feilen, i tilfelle terminalen spyttar ut fleire feilmeldingar etter kvart. Det gjorde den i dag. Det viste seg at om ein venta nokre minutt spytta den ut alle manglande topics.
Dato: 2023-09-14
Utviklar: Ingrid og Christian og Nima (men Thomas har også hatt problemet.)
Case: Får køyrd opp ting, men får
Noe gikk feil ved innlasting av siden. Du kan prøve å logge inn på nytt ved å trykke på denne lenken.
og dei to feilmeldingene du ser i "details"-blokker under her.
Feilmelding frå `./run.sh`:
10:22:57 AM [vite] http proxy error at /innloggetAnsatt:
Error: socket hang up
at connResetException (node:internal/errors:717:14)
at Socket.socketOnEnd (node:_http_client:526:23)
at Socket.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Feilmelding frå `docker logs [frackend-container-id]`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node server.ts`
/home/node/app/node_modules/ts-node/src/index.ts:859
return new TSError(diagnosticText, diagnosticCodes, diagnostics);
^
TSError: ⨯ Unable to compile TypeScript:
app.ts(78,64): error TS2554: Expected 2 arguments, but got 3.
at createTSError (/home/node/app/node_modules/ts-node/src/index.ts:859:12)
at reportTSError (/home/node/app/node_modules/ts-node/src/index.ts:863:19)
at getOutput (/home/node/app/node_modules/ts-node/src/index.ts:1077:36)
at Object.compile (/home/node/app/node_modules/ts-node/src/index.ts:1433:41)
at Module.m._compile (/home/node/app/node_modules/ts-node/src/index.ts:1617:30)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Object.require.extensions.<computed> [as .ts] (/home/node/app/node_modules/ts-node/src/index.ts:1621:12)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Function.Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19) {
diagnosticCodes: [ 2554 ]
}
[nodemon] app crashed - waiting for file changes before starting...
Feilsøking
- `dc down`, så `colima stop`. Start colima att og køyr `/run.sh`. Dette + litt venting løyste det hos Thomas. - `brew update` og `brew upgrade` - Køyrer opp `docker compose up` og `npm run dev` kvar for seg for å kunne sjå fleire loggar. Ser same feil, no tydelegare at den er sendt frå frontend. Får ikkje noko vettugt frå `docker logs [lydia-api-id]` - prøvar å køyre opp med `./run.sh -cfi` - Pullar nyaste endringar frå git. Får same feil. - Slettar frackend-, wonderwall- og backend-imaget. `./run.sh`. Då funka det hos Ingrid etterpå, men ikkje hos Christian. - Etter litt andre random steg fungerer det hos Christian også. - Slett absolutt alt: `dc down`, så `docker system prune -a`. Då fungerte det hos Nima også.Konklusjon:
Vi veit ikkje heilt kva som var gale. Kanskje frackend, kanskje wonderwall. Prøv litt ulike ting, det er vårt beste forslag.
Fikk authentication feil ven nedlasting... Kjørte docker logout ghcr.io
og ble glad igjen.
Litt usikker på hva som skjedde.
Spørsmål knyttet til koden eller prosjektet kan stilles som issues her på GitHub
Interne henvendelser kan sendes via Slack i kanalen #team-pia-utvikling.