πŸ“… ν•΄κ²° λ‚ μ§œ: 2025λ…„ 7μ›” 7일

🎯 핡심 문제: ν—₯ν†  PG 결제 μ™„λ£Œ ν›„ Invalid URL μ—λŸ¬ λ°œμƒ

⏱️ ν•΄κ²° μ‹œκ°„: μ•½ 3μ‹œκ°„μ˜ 디버깅 μ—¬μ •


🚨 문제 상황

μ—λŸ¬ λ©”μ‹œμ§€

Runtime Error
TypeError: Invalid URL

Call Stack
new URL
node:internal/url (818:25)
handleAction
next/dist/src/server/app-render/action-handler.ts
renderToHTMLOrFlightImpl
next/dist/src/server/app-render/app-render.tsx
async doRender
node_modules/next/src/server/base-server.ts (2791:22)

λ°œμƒ 상황


πŸ” 디버깅 κ³Όμ •

1단계: ν™˜κ²½λ³€μˆ˜ μ„€μ • 쀑볡 문제 발견

문제점:

κΈ°μ‘΄ μ½”λ“œ:

// config.tsx
API_DOMAIN: process.env.NEXT_PUBLIC_API_DOMAIN || "<https://api-care-dev-334708545567.asia-northeast3.run.app>"

// axios-config.ts
baseURL: process.env.NEXT_PUBLIC_API_DOMAIN || "<https://api-care-dev-334708545567.asia-northeast3.run.app>"

ν•΄κ²° 방법:

// config.tsx - 쀑앙 집쀑식 관리
const getEnvVar = (envVar: string | undefined, varName: string, defaultValue: string): string => {
  if (!envVar) {
    if (process.env.NODE_ENV === 'development') {
      console.warn(`⚠️ ν™˜κ²½λ³€μˆ˜ ${varName}κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 기본값을 μ‚¬μš©ν•©λ‹ˆλ‹€: ${defaultValue}`);
    }
    return defaultValue;
  }
  return envVar;
};

// axios-config.ts - ν™˜κ²½λ³€μˆ˜ 직접 μ‚¬μš©
const API_DOMAIN = process.env.NEXT_PUBLIC_API_DOMAIN || "<https://api-care-dev-334708545567.asia-northeast3.run.app>";

2단계: 미듀웨어 μ•ˆμ „μ„± κ°•ν™”