๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กNextjs (4)

Suzie's Blog

Next.js 15์—์„œ "URL.canParse()" ์˜ค๋ฅ˜ ํ•ด๊ฒฐํ•˜๊ธฐ (feat: i18next)

๋ฌธ์ œ์ƒํ™ฉ : Next.js 15์—์„œ i18next๋ฅผ ์„ค์น˜ํ•˜์ž "TypeError: URL.canParse is not a function"์˜ค๋ฅ˜ ๋ฐœ์ƒ.์ด ์—๋Ÿฌ๋Š” "URL.canParse()"๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋‚˜ Node.js ํ™˜๊ฒฝ์—์„œ ์•„์ง ์ •์‹์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒ.ํŠนํžˆ "i18next", "resourcesToBackend" ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์—์„œ ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์•ฑ์ด ํฌ๋ž˜์‹œ๊ฐ€ ๋‚จ.๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ๊ฐ„๋‹จํ•œ ํด๋ฆฌํ•„(Polyfill) ์ถ”๊ฐ€ํ•˜๊ธฐ๋‹คํ–‰ํžˆ ์ด ๋ฌธ์ œ๋Š” "ํด๋ฆฌํ•„(Polyfill) ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.ํด๋ฆฌํ•„์ด๋ž€?์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ํ‰๋‚ด ๋‚ด๋Š” ์ฝ”๋“œ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์•ฑ ์ง„์ž…์  (์˜ˆ: app/layout.tsx ๋˜๋Š” app/page.tsx)์ƒ๋‹จ์— ์ถ”๊ฐ€ํ•˜๋ฉด ์—๋Ÿฌ๋ฉ”์„ธ..

๊ฐœ๋ฐœ/Next.js 2025. 4. 17. 04:24
Next.js ์—์„œ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ : public vs src/assets

์ตœ๊ทผ Next.js๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.1. public ํด๋”์— ์ €์žฅํ•˜๊ธฐ2. src/assets ์— ์ €์žฅํ•˜๊ธฐ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์“ฐ๋ฉด ๋˜๋Š” ๊ฑฐ ์•„๋‹ˆ์•ผ?๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‘˜ ๋‹ค ์“ฐ๋Š” ๊ฒŒ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ผ๋‹จ ํŠน์ง•์„ ํ‘œ๋กœ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.ํŠน์ง•publicsrc/assets์‚ฌ์šฉ ๋ฐฉ์‹URL ์ ‘๊ทผ ๊ฐ€๋Šฅ (import ๋„ ๊ฐ€๋Šฅ)Import ๋กœ ๋ถˆ๋Ÿฌ์˜ด์บ์‹ฑ ๋ฌธ์ œ์—…๋ฐ์ดํŠธ ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์ด์ „ ์ด๋ฏธ์ง€์™€ ํŒŒ์ผ๋ช…์ด ๊ฐ™๋‹ค๋ฉด ์˜›๋‚  ํŒŒ์ผ์„ ๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ์Œํ•ด์‹œ๋œ ํŒŒ์ผ๋ช…์œผ๋กœ ์ตœ์‹  ํŒŒ์ผ๋งŒ ํ‘œ์‹œ๋ฒˆ๋“ค๋ง๋ฒˆ๋“ค๋ง ๋˜์ง€ ์•Š์Œ๋ฒˆ๋“ค๋ง๊ณผ ์ตœ์ ํ™” ์ž๋™์œผ๋กœ ์ง„ํ–‰์„ฑ๋Šฅ๋ฒˆ๋“ค ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ์•ˆ์คŒ์ž์ฃผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒˆ๋“ค ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ์ตœ์ ํ™”Next/image ์™€ ํ•จ..

๊ฐœ๋ฐœ/Next.js 2025. 1. 22. 09:14