Problem: Next.js frontend in production mode falls back to http://backend:8000 (Docker Compose internal hostname) when BACKEND_URL env var is not set. In Railway's distributed environment, this hostname doesn't exist, causing ECONNREFUSED errors. Solution: Create unified getBackendUrl() function with consistent fallback priority across all server-side proxying files: 1. Explicit BACKEND_URL (for Railway / custom deployment) 2. Development mode -> http://localhost:8000 3. NEXT_PUBLIC_API_URL (may be set in Railway) 4. Docker Compose default -> http://backend:8000 Changes: - New: frontend/lib/backend-url.ts - centralized URL resolution - Updated: frontend/next.config.ts - use getBackendUrl() - Updated: frontend/app/api/chat/route.ts - use getBackendUrl() - Updated: frontend/app/api/auth/google/token/route.ts - use getBackendUrl() Railway users must set BACKEND_URL=https://<backend-service>.up.railway.app Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| token | ||