Problemy
Strona się otwiera, ale nie ma ofert. Brak aktualizacji na żywo. Błędy przy budowaniu.
Diagnozuj od dołu w górę — najpierw sprawdź, czy dane w ogóle wychodzą z serwera.
Czy rynek ma jakiekolwiek oferty?
Wejdź na serwer i otwórz /rynek. Pusty rynek to pusta strona — i wszystko działa
poprawnie.
Czy most odpowiada?
Na maszynie z serwerem:
curl -H "X-API-Key: twoj-klucz" http://127.0.0.1:8765/api/v1/listings?limit=1Jeśli to nie zwraca JSON-a, problem jest w moście, nie w stronie.
Czy strona ma poprawny adres mostu?
Sprawdź MARKET_API_URL. Najczęstsze pomyłki:
| Pomyłka | Poprawnie |
|---|---|
| Ukośnik na końcu | http://127.0.0.1:8765 |
127.0.0.1 przy Dockerze | http://host.docker.internal:8765 |
| Zły port po zmianie w moście | Ten sam, co api.port |
Czy klucz jest poprawny?
MARKET_API_KEY musi dokładnie odpowiadać wartości z config.yml mostu. Sprawdź
/grzybciorynekweb key.
Zajrzyj do logów strony
# Node
pm2 logs rynek
# Docker
docker compose logs -fBłędy 401 oznaczają zły klucz, 403 — brak uprawnień klucza, ECONNREFUSED — zły
adres albo most nie działa.
- SSE wyłączone. Sprawdź
NEXT_PUBLIC_MARKET_SSE=true. Pamiętaj, że po zmianie zmiennejNEXT_PUBLIC_*trzeba przebudować aplikację, nie tylko zrestartować. - Proxy buforuje. W nginxie musi być
proxy_buffering off;— bez tego strumień nie dochodzi. - SSE wyłączone w moście. Sprawdź
api.sse.enabledwconfig.yml. - Limit połączeń mostu. Domyślnie 64 (
api.sse.max-connections).
Jako obejście możesz przejść na polling:
NEXT_PUBLIC_MARKET_SSE=false
NEXT_PUBLIC_MARKET_POLL_MS=15000To nie błąd, tylko sposób działania Next.js. Zmienne z przedrostkiem NEXT_PUBLIC_ są
wstawiane do kodu w trakcie budowania, a nie czytane przy starcie.
# Node
npm run build && pm2 restart rynek
# Docker
docker compose up -d --buildMARKET_API_URL i MARKET_API_KEY nie mają tego problemu — wystarczy restart procesu.
Jeśli widzisz błąd CORS, to znaczy, że przeglądarka odpytuje most bezpośrednio, a nie przez serwer Next.js. W poprawnie działającej konfiguracji to się nie zdarza.
Sprawdź, czy MARKET_API_URL nie wskazuje na adres publiczny w sposób, który sprawia, że
kod kliencki próbuje się tam dobić. Docelowo przeglądarka powinna rozmawiać wyłącznie
z twoją domeną.
Jeśli świadomie odpytujesz most z przeglądarki, dopisz swoją domenę do allowed-origins
w konfiguracji mostu.
Przekroczony limit zapytań mostu (domyślnie 300/min na klucz).
Najczęstsza przyczyna: wyłączone SSE plus krótki NEXT_PUBLIC_MARKET_POLL_MS. Każdy
odwiedzający odpytuje niezależnie, więc limit rośnie liniowo z ruchem.
Rozwiązania, w kolejności:
- Włącz SSE (
NEXT_PUBLIC_MARKET_SSE=true) — jedno połączenie zamiast ciągłych zapytań. - Wydłuż polling do 30 s.
- Podnieś
authenticated-requests-per-minutew moście.
| Objaw | Przyczyna |
|---|---|
Unsupported engine | Node starszy niż 20 — sprawdź node -v |
| Błędy typów TypeScriptu | Niepełny npm install — usuń node_modules i zainstaluj ponownie |
ENOSPC | Brak miejsca na dysku |
| Build się zawiesza | Za mało RAM-u — na małym VPS-ie rozważ build lokalnie i wgranie gotowych plików |
To działa zgodnie z założeniem. Ulubione zapisywane są w przeglądarce gracza, nie na serwerze. Znikają przy:
- wyczyszczeniu danych przeglądarki,
- trybie prywatnym po zamknięciu okna,
- wejściu z innego urządzenia lub przeglądarki.
Nie ma kont użytkowników, więc nie ma czego synchronizować.
Kontener ma własną sieć — 127.0.0.1 wewnątrz kontenera to sam kontener, nie maszyna
gospodarza.
MARKET_API_URL=http://host.docker.internal:8765docker-compose.yml w projekcie ma już wpisane extra_hosts z mapowaniem
host.docker.internal:host-gateway, więc działa to także na Linuksie.
Jeśli most stoi na zupełnie innej maszynie, wpisz jej adres IP albo domenę — i upewnij się, że port jest dla kontenera osiągalny.
Zgłaszanie błędu
Zgłoszenia na GitHubie.
Dołącz sposób uruchomienia (Node czy Docker), wersję Node.js, logi strony i swój .env
z usuniętym kluczem API.