dodocoding
Students
3,974
Reviews
165
Rating
4.8
ํ๋ก ํธ ๊ฐ๋ฐ์๋ก ๋ค์นด๋ผ์ฟ ๋ฐฐ ์ค ํ๋์ IT์๋น์ค ๊ธฐ์ ์ ์ฌ์งํ๊ณ ์์ต๋๋ค. ๐
๐ SW๋ง์์คํธ๋ก Expert ์ทจ์ ๋ฉํ ๋ง
๐ Naver Boostcamp BE ๋ฉํ ๊ฒฝํ
๐ FE 7Code ๋ก๋๋งต ๊ฐ์ ์ ์
Courses
Reviews
- Next YTMusic Clone Coding from the Basics (with next.js 14, UI Master)
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Getting Started with Supabase and Next Full Stack (feat. Supabase OAuth, Next.js 14)
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Developing AI Memoir Service with React + GPT API (One-Day Class)
Posts
Q&A
Vercel 404 ์๋ฌ ์ง๋ฌธ
์ฌ๋ ค์ฃผ์ ๋ฉ์์ง๋ง์ผ๋ก๋ ๋ฐ๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅํ ๋งํผ์ ๋จ์๋ ์๋ค์. ๋ณดํต ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ง์ ํ๋ ๊ฒฝ๋ก์ ๋ฌธ์ ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ๋ก์ปฌ์์ ๋น๋ํด๋ณด์๊ณ ์ด๋ค ๋๋ ํฐ๋ฆฌ์ ๋น๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํด๋ณด์ธ์.!์ฐธ๊ณ ) https://vercel.com/docs/errors/NOT_FOUND ๐ก 1. ํด๊ฒฐ ๋ฐฉ๋ฒ ์ ์: ํต์ฌ ์ ๊ฒ 404 NOT_FOUND ์ค๋ฅ๋ ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์์ ํ์ง๋ง, ์์ฒญ๋ URL(๊ฒฝ๋ก)์ ์ผ์นํ๋ ๋ผ์ฐํธ๋ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์์ ์๋ฏธํฉ๋๋ค.์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๊ฒฝ๋ก์ ์๋ฒ์ ์ ์๋ ๋ผ์ฐํธ๋ฅผ ๋ฉด๋ฐํ ๋น๊ตํด์ผ ํฉ๋๋ค. ์คํ ๊ฐ๋ฅํ ์กฐ์น ๋จ๊ณ (์์๋๋ก ํ์ธํ์ธ์): URL ๊ฒฝ๋ก ํ์ธ:ํด๋ผ์ด์ธํธ ์ธก: ๋ธ๋ผ์ฐ์ , API ํธ์ถ ๋๋ ๊ตฌ์ฑ ํ์ผ์ URL์ ํ์ธํ์ธ์. ๋์๋ฌธ์ ๊ตฌ๋ถ, ๋ณต์ํ ์ฌ์ฉ ์ฌ๋ถ(์: /user ๋ /users), ํํ ์ฌ๋์(/api/data ๋ /api/data/) ๋ฑ์ ํฌํจํ์ฌ ๊ฒฝ๋ก๊ฐ ์ ํํ ์ผ์นํ๋์ง ํ์ธํ์ธ์.์์ ์์ : ํด๋ผ์ด์ธํธ๊ฐ GET /api/v1/user/42๋ฅผ ์์ฒญํ์ง๋ง, ์๋ฒ ๋ผ์ฐํธ๊ฐ app.get('/api/v1/users/:id', ...)๋ก ์ ์๋์ด ์๋ค๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ /api/v1/users/42๋ฅผ ์์ฒญํ๋๋ก ์์ ํ์ธ์.์๋ฒ ๋ผ์ฐํธ ์ ์ ํ์ธ:Express(Node.js), Flask(Python), Spring Boot(Java)์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด, HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)์ ๊ฒฝ๋ก๊ฐ ํธ๋ค๋ฌ ํจ์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋งคํ๋์ด ์๋์ง ํ์ธํ์ธ์.ํํ ์ค์:/users/:id์ ๊ฐ์ ๋์ ๊ฒฝ๋ก์ ๊ฒฝ์ฐ, ํด๋น ๋ผ์ฐํธ๊ฐ ์ด๋ค "์บ์น์ฌ(catch-all)" ๋๋ 404 ๋ฏธ๋ค์จ์ด๋ณด๋ค ๋จผ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฑ๋ก๋์๋์ง ํ์ธํ์ธ์.์ ์ ์์ฐ ํ์ธ:CSS, JavaScript, ์ด๋ฏธ์ง ํ์ผ ๋ฑ์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ์น ์๋ฒ(๋๋ ํ๋ ์์ํฌ)๊ฐ ์ ์ ํ์ผ์ ์ ๊ณตํ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ํ์ผ์ด ์์๋๋ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋์ง ํ์ธํ์ธ์. ๐ 2. ๊ทผ๋ณธ ์์ธ ์ค๋ช **404 NOT_FOUND**๋ ์๋ฒ์ ์ ํํ ํต์ ์ ๋๋ค: "๋๋ ๋น์ ์ ์ธ์ด(HTTP)๋ ์ดํดํ์ง๋ง, ๋น์ ์ด ์๋ ค์ค ์ฃผ์๋ ๋ด๊ฐ ๊ด๋ฆฌํ๋ ์ด๋ค ๊ฒ๊ณผ๋ ์ผ์นํ์ง ์์ต๋๋ค."์ฝ๋๊ฐ ์ค์ ๋ก ํ ์ผ vs. ํด์ผ ํ๋ ์ผ:์ค์ ๋ก ํ ์ผ:ํด๋ผ์ด์ธํธ๊ฐ ํน์ ๊ฒฝ๋ก(์: /v2/data)๋ฅผ ์์ฒญํ์ต๋๋ค. ์๋ฒ๋ ๋ผ์ฐํ ๋ก์ง์ ์คํํ์ง๋ง ์ผ์นํ๋ ํญ๋ชฉ์ ์ฐพ์ง ๋ชปํ์ฌ, ๊ธฐ๋ณธ ํธ๋ค๋ฌ๋ก ๋์ด๊ฐ๊ณ , ์ด ํธ๋ค๋ฌ๊ฐ 404 ์ํ ์ฝ๋๋ฅผ ์ ์กํ์ต๋๋ค.ํด์ผ ํ๋ ์ผ: ์๋ฒ์ ๋ผ์ฐํ ํ ์ด๋ธ์ /v2/data ๊ฒฝ๋ก์ ๋ํ ์ ํํ ํญ๋ชฉ์ด ํฌํจ๋์ด ์์ด์ผ ํ์ต๋๋ค (๋๋ ํด๋ผ์ด์ธํธ์์ ๊ฒฝ๋ก๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํด์ผ ํ์ต๋๋ค).ํน์ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ ์กฐ๊ฑด:๊ฒฝ๋ก ๋๋ฝ: ์์ฒญ๋ ๊ฒฝ๋ก์ ๋ํ ์๋ฒ ์ธก ๋ผ์ฐํธ ํธ๋ค๋ฌ๊ฐ ์์ ์ ์๋์ง ์์์ต๋๋ค.์๋ชป๋ ๊ตฌ์ฑ: ๋ฆฌ๋ฒ์ค ํ๋ก์(์: Nginx, API Gateway)๊ฐ ์กด์ฌํ์ง ์๋ ๋ฐฑ์๋ ๊ฒฝ๋ก๋ก ์์ฒญ์ ์ ๋ฌํ๊ณ ์๊ฑฐ๋, ๋ผ์ฐํธ ์ ์๋ฅผ ํฌํจํ๋ ๊ตฌ์ฑ ํ์ผ์ด ๋ฐฐํฌ ์ ๋ก๋๋์ง ์์์ต๋๋ค.๋ฆฌ์์ค ๋ถ์ฌ: ๊ฒฝ๋ก๋ ์ ํจํ์ง๋ง(์: /user/42), ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์ ID 42๋ฅผ ํ์ธํ์ง๋ง ์กด์ฌํ์ง ์์ต๋๋ค. (๋ผ์ฐํธ๊ฐ ์ ํจํ๋๋ผ๋ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์์ ๋ํ๋ด๊ธฐ ์ํด 404๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ดํ์ ๋๋ค.)๊ฐ๊ณผํ๊ฑฐ๋ ์คํดํ ์ :๊ฒฝ๋ก์ ์๊ฒฉ์ฑ: ์น ๊ฒฝ๋ก๋ ์ด์ ์ฒด์ ์ ํ์ผ ๊ฒฝ๋ก์ฒ๋ผ ์ ์ฐํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ๊ฒ. ์น ๋ผ์ฐํธ๋ ์๊ฒฉํฉ๋๋ค./Data๋ /data์ ๊ฐ์ง ์์ต๋๋ค.๋ฐฐํฌ ๋ถ์ผ์น: ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ ํ ์ด์ , ์ด์ ๋ ์ญ์ ๋ ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํ๋๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ์๋ฒ ๋ณ๊ฒฝ ์ฌํญ๋ง ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค. ๐ 3. ํต์ฌ ๊ฐ๋ ๊ต์ก: HTTP ๋ผ์ฐํ ๋ฐ ๋ฆฌ์์ค ์ ์ด ์ค๋ฅ๊ฐ ์กด์ฌํ๋ฉฐ, ๋ฌด์์ผ๋ก๋ถํฐ ๋ณดํธํ๋๊ฐ? 404 ์ค๋ฅ๋ HTTP ์ํ ์ฝ๋์ ๊ธฐ๋ณธ ์์ ์ค ํ๋์ ๋๋ค (ํนํ 4xx ๋ฒ์์ ํด๋ผ์ด์ธํธ ์ค๋ฅ ์ฝ๋).๋ชฉ์ : ์ค๋ฅ๊ฐ ํด๋ผ์ด์ธํธ ์ธก์ ์์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ์๋ ค์ค๋๋ค.๋ณดํธ ๊ธฐ๋ฅ: ์ด๋ **๋ด๋ถ ์๋ฒ ์ค๋ฅ(5xx)**์ ๊ตฌ๋ณ๋ฉ๋๋ค. 404๋ "์๋ฒ๋ ์ ์คํ๋๊ณ ์์ง๋ง, ์ด ์ฃผ์๋ ์์ง ๋ชปํ๋ค"๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค. ์ด๋ "์์ฒญ์ ์ฒ๋ฆฌํ๋ ค๋ค๊ฐ ์ถฉ๋์ด ๋ฐ์ํ๋ค"๋ **500 Internal Server Error**๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฉํ ๋ชจ๋ธ: ์ฃผ์๋ก ๊ฒ์ ์๋ฒ๋ฅผ ๊ณต๊ณต ๋์๊ด์ด๋ผ๊ณ ์๊ฐํด ๋ณด์ธ์.ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ ๋๋ค: "๋๋ D-404๋ฒ ์ ๋ฐ, 3๋ฒ ํต๋ก์ ์๋ ์ฑ ์ ์ํฉ๋๋ค" (์ด๊ฒ์ด URL์ ๋๋ค).์๋ฒ(์ฌ์)๋ ์ฃผ์๋ก(๋ผ์ฐํ ํ ์ด๋ธ)์ ํ์ธํฉ๋๋ค.์๋๋ฆฌ์ค A (404): ์ฌ์๊ฐ "๋ด ์ฃผ์๋ก์๋ D-404๋ฒ ์ ๋ฐ์ด ์์ต๋๋ค. ์ด ์ฃผ์๋ ์ฌ๊ธฐ์ ์กด์ฌํ์ง ์์ต๋๋ค"๋ผ๊ณ ๋งํฉ๋๋ค.์๋๋ฆฌ์ค B (200 OK): ์ฃผ์๊ฐ ์กด์ฌํ๊ณ , ์ฌ์๊ฐ ์ ๋ฐ์ผ๋ก ๊ฐ์ ์ฑ ์ ์ฐพ์ ๊ฑด๋ค์ค๋๋ค. ๊ด๋ฒ์ํ ํ๋ ์์ํฌ/์ธ์ด ์ค๊ณ์ ์ด๋ป๊ฒ ๋ถํฉํ๋๊ฐ? ๋๋ถ๋ถ์ ์น ํ๋ ์์ํฌ(Express, Flask ๋ฑ)๋ ์์๊ฐ ์ง์ ๋ ์์คํ ์ ๊ตฌํํฉ๋๋ค:๋ฏธ๋ค์จ์ด/ํธ๋ค๋ฌ: ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ํจ์๋ฅผ ํต๊ณผํฉ๋๋ค(๋ก๊น , ์ธ์ฆ ๋ฑ).๋ผ์ฐํฐ: ์์ฒญ์ด ๋ผ์ฐํฐ์ ๋๋ฌํ๋ฉด, ๋ผ์ฐํฐ๋ URL๊ณผ HTTP ๋ฉ์๋๋ฅผ ์ ์๋ ๋ผ์ฐํธ์ ์ผ์น์ํค๋ ค๊ณ ์๋ํฉ๋๋ค.404 ํด๋ฐฑ(Fallback): ๋ผ์ฐํฐ๊ฐ ๋ชจ๋ ๋ผ์ฐํธ๋ฅผ ํ์ธํ์ง๋ง ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด, ์์ฒญ์ ๊ฐ์ฅ ๋ง์ง๋ง ํธ๋ค๋ฌ, ์ฆ ์ผ๋ฐ์ ์ผ๋ก ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ 404 ํธ๋ค๋ฌ๋ก ๋์ด๊ฐ๋๋ค. โ 4. ๊ฒฝ๊ณ ์ ํธ ๋ฐ ํฅํ ๋ฐฉ์ง์ฑ ๋ค์ ๋ฐ์ํ ์ ์๋ ์์ธ์ผ๋ก ๋ฌด์์ ์ฐพ์์ผ ํ ๊น์? ๊ฒฝ๋ก ๋์๋ฌธ์: ์ด์ ์ฒด์ ๋ ํ๋ ์์ํฌ๊ฐ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒฝ์ฐ, ๋ถ์ผ์น(์: api/users ๋ API/USERS)๋ฅผ ํ์ธํ์ธ์.๋ผ์ฐํธ ๋ ๋ฆฌ์์ค: ํญ๋ชฉ ๋ชฉ๋ก์ ๋ฐํํ๋ ์๋ํฌ์ธํธ(/api/items)๋ ์๋ํด์ผ ํฉ๋๋ค. ํน์ ํญ๋ชฉ์ ๋ฐํํ๋ ์๋ํฌ์ธํธ(/api/items/999)๋ ํญ๋ชฉ 999๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, ๋ชฉ๋ก ์๋ํฌ์ธํธ๊ฐ ์ ์๋ํ๋๋ผ๋ **404**๋ฅผ ๋ฐํํ ๊ฒ์ ๋๋ค. ๊ด๋ จ ์๋๋ฆฌ์ค์์ ์ ์ง๋ฅผ ์ ์๋ ์ ์ฌํ ์ค์: 400 Bad Request์ 404 Not Found ํผ๋: ํด๋ผ์ด์ธํธ๊ฐ ์ ํจํ ๊ฒฝ๋ก๋ฅผ ๋ณด๋ด๋๋ผ๋ ์์ฒญ ๋ณธ๋ฌธ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ(์: ํ์ ํ๋ ๋๋ฝ), ์๋ฒ๋ **400 Bad Request**๋ก ์๋ตํด์ผ ํ๋ฉฐ, 404๊ฐ ์๋๋๋ค. ์ด ๋์ ํผ๋ํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ API ์ค๊ณ ์ค๋ฅ์ ๋๋ค.๊ถํ ๋ถ์ฌ๋์ง ์์ ์ก์ธ์ค์ 404 ์ฌ์ฉ: ๋ก๊ทธ์ธํ์ง๋ง ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ด ์๋ ์ฌ์ฉ์์๊ฒ 404๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์. ๋์ **403 Forbidden**์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. 404๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ ๋ฌธ์ (๊ถํ ๋ถ์ฌ)๋ฅผ ๊ฐ๋ฆด ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ์ฝ๋ ์ค๋ฉ(Code Smells) ๋๋ ํจํด: ํฉ์ด์ ธ ์๋ ๋ผ์ฐํธ ์ ์: ๋ผ์ฐํธ๊ฐ ๋ช ํํ๊ณ ์ค์ ์ง์คํ๋ ์ธ๋ฑ์ค ์์ด ์ฌ๋ฌ ํ์ผ์ด๋ ๋ชจ๋์ ์ ์๋์ด ์๋ค๋ฉด, ๊ทธ ์ค ํ๋๋ฅผ ๋ก๋ํ๊ฑฐ๋ ๋ฑ๋กํ๋ ๊ฒ์ ์๊ธฐ ์ฝ์ต๋๋ค.์๋ ๊ฒฝ๋ก ๋ฌธ์ : ์ฃผ๋ณ URL ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊นจ์ง๋ ํด๋ผ์ด์ธํธ ์ธก ์๋ ๊ฒฝ๋ก(์: /admin/dashboard์์ /admin/settings๋ก ์ด๋ํ ๋ ๊นจ์ง๋ (์ฌ์ง))๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ. ํญ์ ์ ๋ ๊ฒฝ๋ก ๋๋ ๊ฒฝ๋ก ํฌํผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๐ 5. ๋์ ๋ฐ ์ฅ๋จ์ ์ ๊ทผ ๋ฐฉ์์ฌ์ฉ ์์ ์ฅ๋จ์ 404 Not Found (ํ์ค)๋ผ์ฐํธ๊ฐ ์กด์ฌํ์ง ์์ ๋๋ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ์ง ์์.์ฅ์ : ๋ณดํธ์ ์ธ ํ์ค์ ๋๋ค. ๋จ์ : ์กด์ฌํ์ง ์๋ ๋ผ์ฐํธ์ ์กด์ฌํ์ง ์๋ ๋ฆฌ์์ค ID๋ฅผ ๊ตฌ๋ณํ์ง ์์ต๋๋ค.410 Gone๋ฆฌ์์ค๊ฐ ์ด์ ์ ์กด์ฌํ์ง๋ง ์ด์ ์๊ตฌ์ ์ผ๋ก ์ ๊ฑฐ๋จ.์ฅ์ : ํด๋ผ์ด์ธํธ(๋ฐ ๊ฒ์ ์์ง)์๊ฒ ๋ค์ ์๋ํ์ง ์์์ผ ํจ์ ๋ช ํํ๊ฒ ์ ๋ฌํฉ๋๋ค. ๋จ์ : ์๋ฒ๊ฐ ๋ชจ๋ ์๊ตฌ์ ์ผ๋ก ์ญ์ ๋ ID๋ฅผ ๊ธฐ์ตํด์ผ ํ๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.403 Forbidden๋ฆฌ์์ค๋ ์กด์ฌํ์ง๋ง ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณผ ์ ์๋ ๊ถํ์ด ์์.์ฅ์ : ๊ถํ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ์ฌ ๋๋ฒ๊น ์ด ์ฝ์ต๋๋ค. ๋จ์ : ๋ฆฌ์์ค์ ์กด์ฌ๋ฅผ ๋ ธ์ถํ๋ฉฐ, ๋๋ก๋ ๋ณด์ ์ํ์ด ๋ ์ ์์ต๋๋ค.๋ชจ๋ฒ ์ฌ๋ก: ์ค์ ๋ก ์กด์ฌํ์ง ์๋ ๊ฒฝ๋ก์ ID๋ก ์์ฒญํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐพ์ ์ ์๋ ๋ฆฌ์์ค ๋ชจ๋์ ๋ํด **404 NOT_FOUND**๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๊ณ ๊ฐ์ฅ ํผ๋์ด ์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. NOT_FOUNDLast updated October 6, 2025The NOT_FOUND error occurs when a requested resource could not be found. This might happen if the resource has been moved, deleted, or if there is a typo in the URL.404NOT_FOUND:Not Foundp]:m-0" href="https://vercel.com/docs/errors/NOT_FOUND#troubleshoot">TroubleshootI'm encountering an error and reviewing the docs at /docs/errors/NOT_FOUND to understand what's happening. Please help me resolve this by: 1. Suggest the fix: Analyze my codebase context and propose what needs to be changed to resolve this error 2. Explain the root cause: Break down why this error occurred: - What was the code actually doing vs. what it needed to do? - What conditions triggered this specific error? - What misconception or oversight led to this? 3. Teach the concept: Help me understand the underlying principle: - Why does this error exist and what is it protecting me from? - What's the correct mental model for this concept? - How does this fit into the broader framework/language design? 4. Show warning signs: Help me recognize this pattern in the future: - What should I look out for that might cause this again? - Are there similar mistakes I might make in related scenarios? - What code smells or patterns indicate this issue? 5. Discuss alternatives: Explain if there are different valid approaches and their trade-offs My goal is to fix the immediate issue while building lasting understanding so I can avoid and resolve similar errors independently in the future.To troubleshoot this error, follow these steps:Check the deployment URL: Ensure that the deployment URL you are using is correct and does not contain any typos or incorrect pathsCheck deployment existence: Verify that the deployment exists and has not been deletedReview deployment logs: If the deployment exists, review the deployment logs to identify any issues that might have caused the deployment to be unavailableVerify permissions: Ensure you have the necessary permissions to access the deploymentContact support: If you've checked the above and are still unable to resolve the issue, contact support for further assistance
- 0
- 2
- 20
Q&A
vsCode ๋์ ์ปค์๋ฅผ ์ฌ์ฉ
๋ค Cursor์ ์ ์ ์ด VS Code ๋ผ์ ์ปค์๋ฅผ ์ฌ์ฉํด์ฃผ์๋๊ฒ์ ์คํ๋ ค ๊ถ์ฅํฉ๋๋ค.!
- 0
- 2
- 18
Q&A
mac ํฐ๋ฏธ๋ ์ค์ ์ด ๊ถ๊ธํฉ๋๋ค
์๋ ํ์ธ์.! ์ ๋ถ๋ถ์ ์๋ ๋ธ๋ก๊ทธ ๋ณด๊ณ ๋ฐ๋ผํด์ ๋ง๋ค์์ต๋๋ค.!https://kdohyeon.tistory.com/122 IDE ๊ฐ์ ๊ฒฝ์ฐ์๋ Material Theme ๊ณผ Material Icon ์ ๋๋ง ์ ํ๊ตฌ์. eslint, prettier๋ ํ์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉํ์ด์.
- 0
- 1
- 17
Q&A
api ํ ์คํธ์ฉ curl ์์ฑ ์ค๋ฅ
๋ค ์ ์์ ์ผ๋ก ์๋ต๋๋ฉด ์ด์ ์์ต๋๋ค. -N: ์ ์ก ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋งํ์ง ์๋๋ก ํฉ๋๋ค (๋ฒํผ๋ง ๋ฐฉ์ง).-sS: ์ถ๋ ฅ(stdout)์ ์จ๊ธฐ๊ณ (Silent), ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด stderr์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์(Show errors)ํฉ๋๋ค.์ ์ต์ ์ด ๋ถ์ด๋ POST ์์ฒญ์ด ๊ฐ๋๊ฒ์ ํ์ธํ ์ ์๋ค์.
- 0
- 3
- 32
Q&A
git ์ฐ๋ ์ค๋ฅ
git init์ ์ํ๊ฒ์ผ๋ก ๋ณด์ด๋ค์. git init ํ๋ฒ ์งํ ํด๋ณด์๊ฒ ์ด์?~
- 0
- 1
- 24
Q&A
https://localhost:3000/ ๋งํฌ๊ฐ ์์ด๋ ค์
๋ณดํต 3000๋ฒ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ด๋ ค ์์ ๊ฐ๋ฅ์ฑ์ด ๋ง๊ธด ํฉ๋๋ค.https://localhost:3000/ ๋์ http://localhost:3000/ํด๋ณด๊ฑฐ๋ํฌํธ๋ฅผ 3001๋ฒ์ผ๋ก ํด๋ณด์ธ์.http://localhost:3001// vite.config.js ๋๋ vite.config.ts import { defineConfig } from 'vite'; export default defineConfig({ // ๊ธฐํ Vite ์ค์ ... server: { // ๊ฐ๋ฐ ์๋ฒ ์ค์ ์ ์ฌ๊ธฐ์ ์ถ๊ฐํฉ๋๋ค. port: 3001, // ์ํ๋ ํฌํธ ๋ฒํธ(3001)๋ฅผ ์ง์ // host: true, // ์ธ๋ถ IP๋ก๋ ์ ๊ทผ์ด ํ์ํ๋ค๋ฉด ์ถ๊ฐ }, });ํน์# npm ์ฌ์ฉ ์npm run dev -- --port 3001# ๋๋ ๋ ๋ช ์์ ์ผ๋กnpx vite --port 3001
- 0
- 1
- 38
Q&A
DBeaver์ supabase connection
์๋ ํ์ธ์. Session pooler ๋ฐฉ์์ผ๋ก ์ปค๋ฅ์ ํด๋ณด์ธ์.! (์ฌ์ง) Supabase์์ ์ ๊ณตํ๋ 3๊ฐ์ง ์ฐ๊ฒฐ ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฐ๊ฒฐ ์ ์ง ์๊ฐ์ ๋ฐ๋ผ ์ฃผ์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์ฐ๊ฒฐ ๋ฐฉ์๋ณ ์์ธ ์ค๋ช 1. Direct Connection (์ง์ ์ฐ๊ฒฐ) ๊ฐ์ฅ ์ ํต์ ์ธ ๋ฐฉ์์ ๋๋ค. ํด๋ผ์ด์ธํธ(DBeaver)๊ฐ Supabase PostgreSQL ์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ์ ์ฉ ์ฐ๊ฒฐ์ ์ค๋ซ๋์ ์ฌ์ฉํฉ๋๋ค.์ฅ์ : ๋ชจ๋ PostgreSQL ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ์ง์ํ๋ฉฐ, ์ธ์ ๊ธฐ๋ฐ ์ค์ (SET ๋ช ๋ น์ด ๋ฑ)์ ์ ์งํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. DBeaver์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ๊ฐ์ฅ ์ต์ํ๊ณ ์์ ์ ์ธ ๋ฐฉ์์ ๋๋ค.๋จ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ฉํ ์ ์๋ **์ต๋ ์ฐ๊ฒฐ ์(max_connections)**๊ฐ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์, ๋ง์ ์์ ๋์ ์ฌ์ฉ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด ์ฐ๊ฒฐ ์ ํ์ ์ฝ๊ฒ ๋๋ฌํ ์ ์์ต๋๋ค.์ฐธ๊ณ : Supabase์์ Direct Connection์ ๊ธฐ๋ณธ์ ์ผ๋ก IPv6๋ฅผ ๊ถ์ฅํฉ๋๋ค. 2. Session Pooler (์ธ์ ํ๋ฌ) ์ฐ๊ฒฐ ํ๋ง(Connection Pooling) ๊ธฐ์ ์ ์ฌ์ฉํ์ง๋ง, ๋์ ๋ฐฉ์์ Direct Connection๊ณผ ์ ์ฌํฉ๋๋ค.ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ๋ฉด ํ๋ฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ ๋นํ๊ณ ํด๋ผ์ด์ธํธ๊ฐ ๋์ ๋๊น์ง ์ ์งํฉ๋๋ค. ์ฆ, ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์ฐ๊ฒฐ ์ ์ ํ์ ์ด๊ณผํ์ง ์๋๋ก ํ(Queue)์ ์ฐ๊ฒฐ ๊ณต์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ฐ๊ฒฐ์ '์ค๋' ์ ์งํ๋ค๋ ์ ์ Direct Connection๊ณผ ๊ฐ์ต๋๋ค.์ฅ์ : Direct Connection์ ๋์์ผ๋ก ์ ํฉํ๋ฉฐ, ํนํ IPv4 ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค. DBeaver์ ๊ฐ์ด ์ธ์ ์ํ ์ ์ง๊ฐ ํ์ํ GUI ๋๊ตฌ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.๋จ์ : Direct Connection์ฒ๋ผ ์ฐ๊ฒฐ์ ์ค๋ ์ ์งํ๋ฏ๋ก, ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ ์์ฑ ๋ฐ ํด์ ๊ฐ ์ฆ์ ํ๊ฒฝ์์๋ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค. 3. Transaction Pooler (ํธ๋์ญ์ ํ๋ฌ) ์ฐ๊ฒฐ ํ๋ง์ ์ฅ์ ์ ๊ทน๋ํํ ๋ฐฉ์์ผ๋ก, ๊ฐ์ฅ ๋์ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.ํด๋ผ์ด์ธํธ๊ฐ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ํ์ํ ํธ๋์ญ์ ์ด ์งํ๋๋ ๋์์๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ ๋นํ๊ณ , ํธ๋์ญ์ ์ด ์๋ฃ๋๋ ์ฆ์ ์ฐ๊ฒฐ์ ํ์ ๋ฐํํ์ฌ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๊ฐ ์ฆ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.์ฅ์ : ์ ์ ์์ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ๋ก ์๋ฐฑ ๋ฐฐ ์ด์์ ํด๋ผ์ด์ธํธ ๋์ ์ ์์ ์ฒ๋ฆฌํ ์ ์์ด, ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ(Edge/Serverless Functions)์ฒ๋ผ ์งง๊ณ ํญ๋ฐ์ ์ธ ์ฐ๊ฒฐ์ด ํ์ํ ๊ฒฝ์ฐ์ ์ต์ ์ ๋๋ค.๋จ์ : ํธ๋์ญ์ ๋จ์๋ก ์ฐ๊ฒฐ์ด ๋์ด์ง๊ณ ์ฌ์ฌ์ฉ๋๋ฏ๋ก, **์ธ์ ๊ธฐ๋ฐ ์ํ(Session-level state)**๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ DBeaver์ ๊ฐ์ GUI ํด์์ ์ฌ์ฉํ๊ธฐ์๋ ๋ถํธํ ์ ์์ต๋๋ค. (์: PREPARE STATEMENT ์ฌ์ฉ ๋ถ๊ฐ)
- 0
- 2
- 72
Q&A
๊ฐ์ํ๊ฒฝ ๊ฐ์๊ฑด ์๋์?
nvm ๊ฐ์ ๋๊ตฌ๋ก node.js ๋ฒ์ ์์ค์ ๊ด๋ฆฌ๋ ํฉ๋๋ค.!
- 0
- 3
- 37
Q&A
๊ฐ์ํ๊ฒฝ ๊ฐ์๊ฑด ์๋์?
์๋ ํ์ธ์. node.js ์ง์์๋ ๊ฐ์ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.ํ์ง๋ง ๋ณดํต ํ์ด์ฌ ์ฒ๋ผ ๊ฐ์ํ๊ฒฝ์ ๋๊ณ ์ฌ์ฉํ์ง๋ ์์์. ์๋ํ๋ฉด ๋ก์ปฌ ํ๋ก์ ํธ์ ๋ง๋ค node_modules ๊ฐ ํ๋์ฉ ์๊ฒจ์. ์ด๋ป๊ฒ ๋ณด๋ฉด ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ์ด ๋ง๋ค์ด ์ง๋ ๊ฑฐ์ฃ .
- 0
- 3
- 37
Q&A
isLoading ๊ฐ์ด ๋ฐ๋๋ ์์ (๋์ ์์)์ด ๊ถ๊ธํฉ๋๋ค.
isLoading์ด useState๋ก ์ ์ธํ ๋ณ์๊ฐ ์๋๋ฐ๋ ๋ก๋ฉ ์ปดํฌ๋ํธ์์ ๋ฒํผ์ผ๋ก ๋ค์ ๊ทธ๋ ค์ฃผ๋์?https://github.com/dodokyo/yt-music-clone/blob/main/app/playlist/page.tsx๋ก๋ฉ ๋ณ์๊ฐ ์๋๋ฐ ๋ก๋ฉ ์ปดํฌ๋ํธ๊ฐ ๊ทธ๋ ค์ง๋ ๊ฒฝ์ฐ๋ ์ page.tsx๊ฐ ๋ก๋ฉ ๋๋ ๋์ loading.tsx๊ฐ ๋ ๋๋ง ๋๋ ๊ฒฝ์ฐ ์ ๋๋ค.page.tsx ๋ await๋ก ์ค๊ฐ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ ๋๋ ๋ถ๋ถ์ด ์์ต๋๋ค. " const playlist = await getPlaylistById(Number(props.searchParams.list));" ์ด ๋ถ๋ถ์ด์ฃ .์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๊ธด ํ์ง๋ง, ๊ทธ ๋์ ํ์ด์ง๊ฐ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ ์ปดํฌ๋ํธ๋ loading.tsx๋ผ๊ณ ์ฝ์ํ๊ฒ์ด next.js ์ ๋๋ค. ๋ด๋ถ์ ์ธ ๋์์๋ฆฌ๋ React suspense ๋ผ๊ณ ๊ฐ์์์ ์ ๋ฌ๋๋ฆฐ๋ฐ ์์ต๋๋ค. ~ ๋ต๋ณ ๋๋ฆฌ๊ณ ๋๋ ์ง๋ฌธ์ ์ ํํ ์๋๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ค์ ๋จ๊ฒจ์ฃผ์๋ฉด ๋ ์ ํํ ๋ต๋ณ ๊ฐ๋ฅํฉ๋๋ค.
- 0
- 3
- 53







