[error] 'SomeComponent' cannot be used as a JSX component ํ•ด๊ฒฐ๋ฐฉ๋ฒ•๐Ÿคฏ

๋„๋น„ยท2023๋…„ 10์›” 24์ผ
post-thumbnail

์ด์Šˆ

ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ ์ค‘ ๋‹ค๋ฅธ ํŒ€์› ๋ถ„์˜ ์ž‘์—… ๋‚ด์šฉ์„ ์ด์–ด ๋ฐ›์•„ ์ž‘์—…ํ•  ์ผ์ด ์žˆ์—ˆ๋‹ค. ๋ฐฅ๊ฐ’์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋ธŒ๋Ÿฐ์น˜๋ฅผ ๊ฐ€์ ธ์™€ ์„ค์น˜ํ•˜๊ณ  ๋‚˜๋‹ˆ ์ž‘์—…๋œ ์ปดํฌ๋„ŒํŠธ ์ค‘ swiper๊ฐ€ ์ ์šฉ๋œ ๊ณณ๋งˆ๋‹ค ๋นจ๊ฐ„ ๋ฌผ๊ฒฐ ์ค„์ด ๋„˜์‹ค๊ฑฐ๋ ธ๋‹ค.

ํŒ€์› ๋ถ„์˜ ์ž‘์—… ํ™˜๊ฒฝ์—์„  ํ•ด๋‹น ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜๋‹ค. ๋ธŒ๋Ÿฐ์น˜๋ฅผ ๊ฐ€์ ธ์™€์„œ yarn์œผ๋กœ installํ•˜๋ฉฐ ๋ฌด์–ธ๊ฐ€ ์ถฉ๋Œ์ด ๋‚œ ๋“ฏํ–ˆ๋‹ค. build์‹œ์— ์žกํžˆ๋Š” ์—๋Ÿฌ๋„ ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ ๋นจ๊ฐ„ ์ค„์„ ๋ฌด์‹œํ•˜๊ณ  ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋งˆ์ง€๋ง‰์˜ ๋งˆ์ง€๋ง‰์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์ •๋ง ๋งˆ์ง€๋ง‰์— ํ•ด๊ฒฐํ–ˆ๋‹ค.

์‰ฝ๊ฒŒ๋งŒ ์‚ด์•„๊ฐ€๊ณ  ์‹ถ์€ ์‚ฝ์งˆ

ํ•ด๋‹น ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ œ์‹œ๋˜์–ด ์žˆ๋‹ค. ๋‹น์—ฐํžˆ ๋ชจ๋“  ์—๋Ÿฌ๋Š” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ์ œ๋ง›์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ์†์‰ฌ์›Œ ๋ณด์ด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋”ฐ๋ผํ•ด๋ณด์ž.

๋ญ๊ฐ€ ๋๋“  ์ด๊ฒƒ๋ถ€ํ„ฐ ํ•ด๋ด๋ผ ๋ฐฉ๋ฒ•

์งœ๋ฐ”๋ฆฌ ๊ฐœ๋ฐœ์ž ์ธ์ƒ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋ฐฐ์šด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋จผ์ € yarn.lock ํŒŒ์ผ๊ณผ node_modules ํด๋”๋ฅผ ์ง€์›Œ๋ณด๊ณ  ๋‹ค์‹œ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


๋ ๋ฆฌ ์—†๋‹ค.

๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์‹œ ์ƒ์œ„์— ๋…ธ์ถœ๋˜๋Š” ์†”๋ฃจ์…˜ ๋”ฐ๋ผํ•˜๊ธฐ

๋จผ์ € ํ•ด๋‹น ๊ธ€์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ๋”ฐ๋ผํ•ด๋ดค๋‹ค.
pakageํŒŒ์ผ์—์„œ @types/react์™€ @types/react-dom์„ dependencies์— ์˜ฎ๊ฒจ๋ดค์ง€๋งŒ, ๊ธ€์„ ์ž‘์„ฑํ•œ ๋ถ„๋„ ์‹คํŒจํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
๋‹ค๋งŒ ํ•ด๋‹น ์†”๋ฃจ์…˜์„ ์ฝ์–ด๋ณด๋‹ˆ React 18๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด type ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์•…๋งˆ๊ฐ™์€ @types/react์˜ ๋ฒ„์ „์„ 17๋กœ ๋‚ด๋ฆฌ๋ฉด ํ•ด๊ฒฐ์ด ๋œ๋‹ค๋Š” ๊ท“๋™๋ƒฅ์„ ์–ป์–ด๋“ค์–ด ๋ฒ„์ „์„ ๋‚ด๋ฆฌ๋‹ˆ swiper์—์„œ ๋นจ๊ฐ„ ์ค„์ด ์‚ฌ๋ผ์กŒ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋„˜์‹ค๊ฑฐ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

์–ธ์ œ๋‚˜ ๋‚˜๋ณด๋‹ค ๋จผ์ € ๊ณ ํ†ต๋ฐ›์€ ์–ด๋А ์™ธ๊ตญ์ธ์˜ ์†”๋ฃจ์…˜

stackoverflow๋ฅผ ๋’ค์ ธ๋ณด๋ฉฐ typescript config options์„ ๋ฐ”๊ฟ”๋ณด์•˜์œผ๋‚˜ ๋‚ด ๊ฒฝ์šฐ์— ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์–ด๋А ํ›Œ๋ฅญํ•œ ์™ธ๊ตญ์ธ์ด react repo์—์„œ ํ•ด๋‹น issue๊ฐ€ ์—ด๋ฆฐ ๋งํฌ๋ฅผ ๊ฑธ์–ด์ค€ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.
ํ•ด๋‹น ์†”๋ฃจ์…˜์€ npm์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”๋ฐ yarn์€ npm์ฒ˜๋Ÿผ ๋”ฐ๋กœ ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ preinstall์„ ์„ค์ •ํ•ด์ค„ ํ•„์š”๋Š” ์—†๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋‚˜์™€ ๊ฐ™์€ ๊ณ ํ†ต์„ ๊ฒช๋Š” ์‚ฌ๋žŒ์—๊ฒ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ง์€ ssapsori์ผ ๋ฟ. ๋ฐ”๋กœ ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.

/// package.json

"dependencies": {
	...
    "@types/react": "17.0.38",
},
"resolutions": {
    "@types/react": "17.0.30"
},

resolution ์˜ต์…˜์— ๋˜‘๊ฐ™์ด 17๋ฒ„์ „์˜ @types/react๋ฅผ ๋‹ด์•„์ค€ ํ›„ yarn.lock ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ํ•ด๊ฒฐ ๋œ๋‹ค.

yarn resolutions?

yarn ๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด ํ•ด๋‹น ์˜ต์…˜ ๊ฐ’์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์“ฐ์—ฌ์žˆ๋‹ค.

Selective dependency resolutions

๋ฌธ์„œ์˜ ์ œ๋ชฉ์— ์“ฐ์—ฌ์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋Œ€์ถฉ '์„ ํƒ์  ์ข…์†์„ฑ ํ•ด๊ฒฐ'์„ ๋„์™€์ฃผ๋Š” ์˜ต์…˜์ด๋‹ค.
๋‚ด๊ฐ€ package ํŒŒ์ผ์—์„œ @types/react์˜ ๋ฒ„์ „์„ 17๋กœ ๊ณ ์ •ํ•ด๋‘์—ˆ๋‹ค๊ณ  ํ•ด๋„, ์„ค์น˜๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ node_modules์—์„œ ๊นŒ๋ณด๋ฉด ์ข…์ข… ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ์˜์กด์„ฑ ๋ชจ๋“ˆ์ด @types/react์„ ๋ฌด์กฐ๊ฑด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋ฐ›๊ณ  ์žˆ๋Š”๋‹ค๊ฑฐ๋‚˜, ๋‚˜๋ณด๋‹ค ๋†’์€ ๋ฒ„์ „ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

resolutions ์˜ต์…˜์„ ์ฃผ์ง€ ์•Š์€ ์ฑ„๋กœ yarn list [module name] ๋ช…๋ น์–ด๋กœ ๊ฐ module์— ์–ด๋–ค ์‹์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

โ”œโ”€ @types/hoist-non-react-statics@3.3.4
โ”‚  โ””โ”€ @types/react@18.2.31
โ”œโ”€ @types/mui-image@1.0.1
โ”‚  โ””โ”€ @types/react@18.2.31
โ”œโ”€ @types/react-dom@18.0.9
โ”‚  โ””โ”€ @types/react@18.2.31
โ”œโ”€ @types/react-swipeable-views@0.13.1
โ”‚  โ””โ”€ @types/react@18.2.31
โ”œโ”€ @types/react-transition-group@4.4.8
โ”‚  โ””โ”€ @types/react@18.2.31
โ”œโ”€ @types/react@17.0.30
โ””โ”€ react-intl@6.2.7
   โ””โ”€ @types/react@18.2.31

๋Œ€๋ถ€๋ถ„ module์ด ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›๊ณ  ์žˆ์œผ๋ฏ€๋กœ 17๋ฒ„์ „๊ณผ๋Š” ์ถฉ๋Œ์ด ๋‚œ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ resolutions ์˜ต์…˜์„ ์ค€ ์ฑ„๋กœ ๋‹ค์‹œ yarn list [module name] ๋ช…๋ น์–ด๋ฅผ ์ค˜๋ณด์ž.

โ””โ”€ @types/react@17.0.30

dependencies์™€ ๊ฐ™์€ ๋ฒ„์ „์œผ๋กœ ์„ค์น˜๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

react 18์€ ๋งŽ์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฒ„์ „์ด๋ฏ€๋กœ, type ์ •์˜ ๋˜ํ•œ ๋งŽ์ด ๋ฐ”๋€Œ์—ˆ๋‹ค. ์ˆ˜๋งŽ์€ ๋ชจ๋“ˆ๊ณผ ์˜์กด์„ฑ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„  ๋‹น๋ถ„๊ฐ„์€ 17๋ฒ„์ „์œผ๋กœ ๊ณ ์ •์‹œ์ผœํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์ฐธ๊ณ ๋กœ resolutions์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์„ค์ • ๊ฐ’์€ ํ•ด๋‹น ๋ฌธ์„œ์— ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

Reference

https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/
https://github.com/vercel/next.js/issues/42292
https://velog.io/@sweetpumpkin/ThemeProvider-cannot-be-JSX-element-%EC%97%90%EB%9F%AC

profile
๋…๋ฆฝํ•˜๋ฉด ๊ณต๋ถ€ํ•  ์‹œ๊ฐ„์ด ๋งŽ์•„์งˆ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ง‘์š”์ •๋„๋น„๊ฐ€ ๋˜๋ฒ„๋ฆฐ ๊ฑด์— ๋Œ€ํ•˜์—ฌ

0๊ฐœ์˜ ๋Œ“๊ธ€