Dokumentation

Fehlerbehebung

Häufige Motoko-Base-Probleme und Fixes — Auth, OAuth, Datenbank, E-Mail, Billing, Storage, Sentry und Build-Fehler.

Öffnen inChatGPT (öffnet in neuem Tab)Claude (öffnet in neuem Tab)Cursor (öffnet in neuem Tab)Häufige Motoko-Base-Probleme und Fixes — Auth, OAuth, Datenbank, E-Mail, Billing, Storage, Sentry und Build-Fehler.

Schnelle Fixes für Probleme, die oft beim ersten Setup oder Produktions-Deploy auftreten. Env-Details: Environment Variables.

Authentifizierung funktioniert nicht

Symptome: Kein Sign-in, Session nach Refresh weg, Redirect-Loops, Cookies nicht gesetzt.

CheckFix
BETTER_AUTH_SECRET fehltIn .env setzen — in Produktion erforderlich
BETTER_AUTH_URL falschMuss zur URL passen, die du im Browser öffnest (inkl. http:// vs. https://, Port, keine Trailing-Slash-Probleme)
Abweichung zu NEXT_PUBLIC_APP_URLBeide in jeder Umgebung auf dieselbe Origin ausrichten
Datenbank down / Migrationen nicht gelaufenDATABASE_URL prüfen, pnpm db:migrate ausführen
E-Mail nicht verifiziertDashboard erfordert Verifizierung — Posteingang prüfen oder /verify-email nutzen

Siehe Better Auth und Installation.

OAuth-Callback-Fehler

Symptome: redirect_uri_mismatch, Google-/GitHub-Fehler nach Authorize, Social-Buttons deaktiviert.

CheckFix
Button deaktiviertBeide GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET setzen (oder GitHub-Paar); Dev-Server neu starten
Callback-URL-MismatchProvider-Konsole muss exakt {BETTER_AUTH_URL}/api/auth/callback/google oder .../github haben
Produktion vs. lokalSeparate Callback-URLs für Localhost und Produktionsdomain hinzufügen
Google-TestmodusKonto als Testnutzer auf dem OAuth-Consent-Screen hinzufügen

Siehe OAuth Setup.

Datenbankverbindung fehlgeschlagen

Symptome: App crasht beim Boot, Migrationen scheitern, ECONNREFUSED, Timeout-Fehler.

CheckFix
DATABASE_URL fehlt oder falschAus Supabase-/Host-Dashboard kopieren; nie NEXT_PUBLIC_* nutzen
Migrationen nicht angewendetpnpm db:migrate
Pooler vs. direktRuntime: Transaction-Pooler (oft Port 6543). Migrationen: direkte URL (Port 5432) versuchen, wenn DDL scheitert
Supabase-Projekt pausiertProjekt im Supabase-Dashboard wiederherstellen
prepare: falseBereits in src/lib/db/index.ts gesetzt — für Supabase-Pooler erforderlich; Prepared Statements nicht aktivieren

Siehe Database und Migrations.

E-Mails werden nicht gesendet

Symptome: Keine Verifizierungs-E-Mail nach Sign-up, Forgot-Password tut nichts, Welcome-Mail fehlt.

CheckFix
Resend nicht konfiguriertRESEND_API_KEY und EMAIL_FROM setzen
Falscher AbsenderIn Produktion verifizierte Domain nutzen; zum Testen onboarding@resend.dev versuchen
BETTER_AUTH_URL falschReset-/Verifizierungslinks zeigen auf falschen Host — Origin korrigieren
Fehler auf Forgot-Password-SeiteSeite prüft isEmailConfigured() — beide Resend-Vars erforderlich
Resend-DashboardResend-Logs auf Bounces oder API-Fehler prüfen

Siehe Email (Resend).

Polar-Checkout öffnet nicht

Symptome: Billing-Seite zeigt „not configured“, Checkout-Button scheitert, bleibt nach Zahlung auf Free.

CheckFix
Fehlende Env-VarsPOLAR_ACCESS_TOKEN, POLAR_PRO_MONTHLY_PRODUCT_ID, POLAR_WEBHOOK_SECRET
Sandbox vs. ProductionPOLAR_SERVER=sandbox mit Sandbox-Token/Produkt — oder production mit Live-Credentials
Webhook-URL{APP_URL}/api/billing/webhooks/polar — muss von Polar erreichbar sein
Nach CheckoutBilling-Seite nutzt getFreshBillingSummary beim Success-Redirect; Webhook-Zustellung bestätigen
Kein Polar-CustomerNutzer braucht einen Polar-Customer (bei Sign-up erstellt, wenn Billing konfiguriert ist) vor dem Portal

Siehe Payments (Polar).

R2-Upload scheitert

Symptome: Storage-Seite zeigt Config-Meldung, Presigned-URL-Fehler, Browser-Upload-CORS-Fehler, 403 bei PUT.

CheckFix
Fehlende R2_*-VarsAccount-ID, Access Key, Secret, Bucket-Name setzen
Bucket-Name mit Slashmy-bucket/demo → Bucket my-bucket, Prefix demo/ — oder R2_PREFIX nutzen
CORSApp-Origin zur R2-Bucket-CORS-Policy in Cloudflare hinzufügen
Datei zu groß / falsches MIMELimits in src/features/storage/config.ts
HEAD-Validierung scheitertServer validiert Upload nach PUT — Objekt im R2-Dashboard prüfen

Siehe Storage (R2).

Sentry empfängt keine Fehler

Symptome: Keine Issues im Sentry-Dashboard nach Testfehler.

CheckFix
Test in next devSentry ist während Dev deaktiviert — pnpm build && pnpm start nutzen oder auf deployed Production testen
DSN fehltNEXT_PUBLIC_SENTRY_DSN setzen
Falsches ProjektBestätigen, dass DSN zum betrachteten Sentry-Projekt passt
Ad-BlockerBrowser kann Sentry blockieren — /sentry-tunnel-Route oder Server-Fehler testen
Source MapsSENTRY_AUTH_TOKEN, SENTRY_ORG, SENTRY_PROJECT zur Build-Zeit setzen für lesbare Stacks

Siehe Monitoring (Sentry).

Build scheitert

Symptome: pnpm build endet lokal oder in CI mit Fehlern.

CheckFix
Node-VersionErfordert Node ≥ 22 — node -v ausführen
Typfehlerpnpm typecheck — gemeldete TypeScript-Probleme beheben
Lint-Fehlerpnpm lint
Fehlende Env beim BuildDie meisten Vars sind nur Runtime; Sentry-Upload-Vars nur bei Source Maps nötig
MDX / Docspnpm install ausführen, damit postinstall (fumadocs-mdx) abgeschlossen wird
Lockfilepnpm install nutzen — npm/yarn nicht mischen
pnpm lint && pnpm typecheck && pnpm test && pnpm build

Immer noch stecken?

  1. Installation und Produktions-Setup erneut lesen
  2. Deine .env mit .env.example vergleichen
  3. Integrations-Dashboards prüfen (Resend, Polar, Cloudflare, PostHog, Sentry)
  4. Im Repo-README und Feature-READMEs unter src/lib/email/, src/lib/security/ usw. suchen

Scripts — Befehlsreferenz.

Konfigurationsreferenz — Index der Config-Dateien.