๊ฐ•์˜

๋ฉ˜ํ† ๋ง

๋กœ๋“œ๋งต

Inflearn Community Q&A

hinpuo9675's profile image
hinpuo9675

asked

Bite-sized Next.js

2.2) Setting up page routing

404.tsx

Resolved

Written on

ยท

157

0

๐Ÿšจ๊ธด๊ธ‰ ๊ณต์ง€

  • 04.30 ~ 05.07 ํœด๊ฐ€ ๊ธฐ๊ฐ„์œผ๋กœ ์ธํ•ด ํšจ๋นˆ๋‹˜๊ป˜์„œ ๋‹ต๋ณ€์„ ๋Œ€์‹  ํ•ด ์ฃผ์‹ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

  • ๋ถˆํŽธํ•จ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ธˆ๋ฐฉ ๋ณต๊ท€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿซก

 

๐Ÿšจ ํ•„๋…) ์งˆ๋ฌธํ•˜์‹œ๊ธฐ ์ „์— ๊ผญ ์ฝ์–ด์ฃผ์„ธ์š” (10์ดˆ ์†Œ์š”)

  • ์ œ๋ชฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”

    • โœ… ์ข‹์€ ์˜ˆ : ๊ฐ์ •์ผ๊ธฐ์žฅ Home ๊ตฌํ˜„์ค‘ xx ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    • โ›”๏ธ ๋‚˜์œ ์˜ˆ : ์ด๊ฑฐ ์™œ ์•ˆ๋˜๋‚˜์š”?, ์˜ค๋ฅ˜๋‚˜์š” ๋„์™€์ฃผ์„ธ์š” ๋“ฑ

    • ๋น„์Šทํ•œ ๊ถ๊ธˆํ•จ์„ ๊ฐ–๊ณ  ๊ณ„์‹  ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์–ด์š”!

       

       

     

  • ์ฝ”๋“œ์˜ ์ด์Šˆ๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ "๋งํฌ ํ˜•ํƒœ"๋กœ ์˜ฌ๋ ค์ฃผ์…”์•ผ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊นƒํ—ˆ๋ธŒ, ๊ตฌ๊ธ€๋“œ๋ผ์ด๋ธŒ ๋“ฑ์˜ ์ˆ˜๋‹จ์„ ํ†ตํ•ด ๋งํฌ ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•ด์ฃผ์„ธ์š”

    • ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๋ฉฐ ์›์ธ์„ ํŒŒ์•…ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ถ™์—ฌ๋„ฃ๋Š”๊ฑด ์‚ผ๊ฐ€ํ•ด์ฃผ์„ธ์š” ๐Ÿฅฒ

       

  • ๋‹ต๋ณ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ๋‹ต๊ธ€ or ํ•ด๊ฒฐ์™„๋ฃŒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”

    • ๋น„์Šทํ•œ ๊ถ๊ธˆํ•จ์„ ๊ฐ–๊ณ  ๊ณ„์‹  ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์–ด์š”!

    • ์ œ ๋‹ต๋ณ€์ด ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ๋„์›€์ด ๋˜์—ˆ๋Š”์ง€ ์ €๋„ ์•Œ๊ณ  ์‹ถ์–ด์š” ๐Ÿฅฒ

       

  • ๊ฐ•์˜ ๋‚ด์šฉ์— ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ๋ช‡ ์ฑ•ํ„ฐ์˜ ๋ช‡ ๋ถ„ ๋ช‡ ์ดˆ์ธ์ง€ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๋” ์ข‹์•„์š”

    • ๋” ๋น ๋ฅธ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

  • ๊ฐ•์˜๋ž‘ ๋™์ผํ•˜๊ฒŒ [[...id]].tsx๋ž‘ 404.tsx ๋งŒ๋“ค์—ˆ๋Š”๋ฐ url์„ http://localhost:3000/book/123-123123๋กœ ํ•ด๋„ ์™œ ์ž˜ ํ‘œํ˜„ ๋ ๊นŒ์š”?
    http://localhost:3000/adfafdas ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋ฉด 404ํŽ˜์ด์ง€๋กœ ์ž˜ ์ด๋™ ๋ฉ๋‹ˆ๋‹ค.

    image.png

reacttypescriptnext.js

Quiz

46% of people got it wrong. Give it a try!

Next.js ํŽ˜์ด์ง€ ๋ผ์šฐํ„ฐ์—์„œ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜์š”?

ํŒŒ์ผ ์ด๋ฆ„๊ณผ ํ™•์žฅ์ž์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ํŒŒ์ผ์ด ํŽ˜์ด์ง€๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

`pages` ํด๋” ๊ตฌ์กฐ์— ๋”ฐ๋ผ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๊ฐ€ URL ๊ฒฝ๋กœ์— ๋งคํ•‘๋˜์–ด ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŒ…์€ ์„ค์ • ํŒŒ์ผ์—์„œ๋งŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ๋Š” ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

์˜ค์ง `index.tsx` ํŒŒ์ผ๋งŒ ํŽ˜์ด์ง€๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค.

Answer 2

0

winterlood๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
winterlood
Instructor

์•ˆ๋…•ํ•˜์„ธ์š” ์ด์ •ํ™˜์ž…๋‹ˆ๋‹ค.

๊ฐ•์˜์—์„œ 404 ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋˜๋Š” ์ฃผ์†Œ๋Š” ์•„๋ž˜ ๊ฐ•์˜ ์บก์ณ์™€ ๊ฐ™์ด 225/225 ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐœ์˜ URL ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์Šฌ๋ž˜์‹œ(/)๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋Š” ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ์ฃผ์‹  123-123123์€ ์Šฌ๋ž˜์‹œ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ์— ํ•˜๋‚˜์˜ URL ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ์กด์žฌํ•˜๋Š”๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

image.png

 

0

์•ˆ๋…•ํ•˜์„ธ์š”, ์ธํ”„๋Ÿฐ AI ์ธํ„ด์ž…๋‹ˆ๋‹ค. hinpuo๋‹˜.

Next.js์—์„œ ๊ตฌ์„ฑํ•œ [[…id]].tsx์™€ 404.tsx์— ๊ด€ํ•œ ์งˆ๋ฌธ์„ ์ฃผ์…จ๋„ค์š”. ์งˆ๋ฌธ ๋‚ด์šฉ์œผ๋กœ ๋ณด์•„ ๋ผ์šฐํŒ…์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ถ„์„ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  1. […id] ๊ฒฝ๋กœ ์„ค์ •:

    • [[…id]].tsx๋Š” ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŠธ๋กœ ์‚ฌ์šฉ๋  ๋•Œ ๋ชจ๋“  ํ•˜์œ„ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ catch-all ๋ผ์šฐํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— /book/123-123123์™€ ๊ฐ™์€ URL๋กœ ์ ‘์† ์‹œ, [[...id]].tsx ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์ด์™€ ๋‹ฌ๋ฆฌ, /adfafdas์™€ ๊ฐ™์€ ๊ฒฝ๋กœ๊ฐ€ 404 ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋งž๋Š” Next.js ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  2. 404 ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ ์„ค์ •:

    • ํŠน์ • ๊ฒฝ๋กœ๋ฅผ 404 ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰ํŠธํ•˜๊ณ ์ž ํ•˜์‹ ๋‹ค๋ฉด, getStaticPaths ํ•จ์ˆ˜์—์„œ paths ๋ฐฐ์—ด์— ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ œ์™ธํ•œ ๊ฒฝ๋กœ๋งŒ ๋‹ด๊ฑฐ๋‚˜, ์กฐ๊ฑด๋ถ€๋กœ ํ•ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํ•ธ๋“ค๋งํ•˜์—ฌ notFound๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์—๋Ÿฌ ํŽ˜์ด์ง€ ๊ตฌํ˜„:

    • 404.tsx ํŒŒ์ผ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ catch๋˜์ง€ ๋ชปํ•œ ๋ชจ๋“  ๋ผ์šฐํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์—๋Ÿฌ ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ ๊ฒฝ๋กœ์— ์ถ”๊ฐ€์ ์ธ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Next.js์˜ URL ๋งค์นญ ๋ฐ ํŽ˜์ด์ง€ ์ด๋™ ๋กœ์ง์— ๋”ฐ๋ฅด๋ฉด ์œ„์™€ ๊ฐ™์€ ํŠน์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅธ ํ–‰๋™์ด ๊ณ„์†๋œ๋‹ค๋ฉด, ๊ด€๋ จ ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ๋‹ค์‹œ ์ ๊ฒ€ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์œ ์‚ฌํ•œ ์งˆ๋ฌธ ๋ฐ ์ถ”๊ฐ€ ์ž๋ฃŒ:
- Next.js Dynamic Routes and 404 Handling
- Next.js์—์„œ 404 ํŽ˜์ด์ง€ ์„ค์ •ํ•˜๊ธฐ

์œ„ ๋‚ด์šฉ์ด ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ผ๋ฉฐ, ๋ฌธ์ œ๊ฐ€ ์ง€์†๋  ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ฃผ์‹œ๋ฉด ๋” ๋‚˜์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•„๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์งˆ๋ฌธ์ž๋‹˜์˜ ์ดํ•ด๋ฅผ ๋•๊ณ ์ž ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๊ธฐ์กด ๋‹ต๋ณ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์œ ์‚ฌํ•œ ๋‹ต๋ณ€ ๋งํฌ๋ฅผ ์ถ”์ฒœํ•ด๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ ํƒ€ ๊ธฐ๋Šฅ์œผ๋กœ ๋‹ต๋ณ€์ด ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ™ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋ฉด, ์ด์–ด์„œ ์งˆ๋ฌธํ•ด ์ฃผ์„ธ์š”. ๊ณง ์ง€์‹๊ณต์œ ์ž๊ป˜์„œ ๋‹ต๋ณ€ํ•ด ์ฃผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

hinpuo9675's profile image
hinpuo9675

asked

Ask a question