[๐Ÿšจ Error ๐Ÿšจ] Yarn PnP cannot find module ์—๋Ÿฌ

์šฐํ˜ยท2024๋…„ 6์›” 28์ผ

๐Ÿšจ Error ๐Ÿšจ

๋ชฉ๋ก ๋ณด๊ธฐ
10/11

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฐฐ๊ฒฝ

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  Yarn PnP๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜์กด์„ฑ ์„ค์น˜๋Š” ๋‹ค ๋๋‚ฌ์ง€๋งŒ ๋ชจ๋“ˆ์„ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋Š” ts ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.


๋ฌธ์ œ์˜ ์›์ธ ์•Œ์•„๋ณด๊ธฐ

์›๋ž˜๋Š” import React๋งŒ ์ž…๋ ฅํ•ด๋„ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ž๋™ ์™„์„ฑ์ด ๋‚˜์˜ค๋Š”๋ฐ ๊ทธ๊ฒƒ์กฐ์ฐจ ๋‚˜์˜ค์ง€ ์•Š์•„ ๋‚ด๊ฐ€ ์ง์ ‘ ์ž‘์„ฑ์„ ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์‹ค์ œ๋กœ ์˜์กด์„ฑ์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค...!

// package.json ํŒŒ์ผ 
{
  "name": "yarn-template",
  "packageManager": "yarn@4.3.1",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "next": "^14.2.4",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "@types/node": "^20.14.9",
    "@types/react": "^18.3.3",
    "@types/react-dom": "^18.3.0",
    "typescript": "^5.5.2"
  }
}

.pnp.cjs ํŒŒ์ผ์—๋„ ์˜์กด์„ฑ์ด ์ž˜ ์„ค์น˜๋˜์–ด ์žˆ๊ณ , ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์‹คํ–‰, ๋นŒ๋“œ ํ…Œ์ŠคํŠธ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™์€ ํ•œ๋‹ค...

Yarn ๊ณต์‹๋ฌธ์„œ ์—๋””ํ„ฐ SDK๋ฅผ ์ฝ์–ด๋ณด๋ฉด ์Šค๋งˆํŠธ IDE(VScode, IntelliJ ๋“ฑ)์€ Plug'n'Play ์„ค์น˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ TypeScript๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๋‚˜์™€์žˆ๋‹ค.

๐Ÿ”Ž ๋” ๊นŠ๊ฒŒ ์•Œ์•„๋ณด๊ธฐ

์™œ PnP ๋ฐฉ์‹์—์„œ๋Š” TypeScript๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ SDK๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ• ๊นŒ?

Yarn PnP(Plug-and-Play) ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“ˆ์ด ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— ์ง์ ‘ ์„ค์น˜๋˜์ง€ ์•Š๊ณ , ๋Œ€์‹  ์ค‘์•™ ์บ์‹œ ์œ„์น˜์— ์„ค์น˜๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“ˆ ๊ฐ„์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๋” ํšจ์œจ์ ์ด์ง€๋งŒ, ์ผ๋ถ€ IDE ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์ด ๋ฐฉ์‹์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Prettier, TypeScript์™€ ๊ฐ™์€ ๋„๊ตฌ๋“ค์€ ๋ชจ๋“ˆ์„ ์ง์ ‘ ์ฐพ์•„์„œ ์‹คํ–‰ํ•˜๋ ค ํ•˜์ง€๋งŒ, Yarn PnP ๋ฐฉ์‹์—์„œ๋Š” ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด SDK๋ฅผ ํ†ตํ•ด Yarn PnP ๋ฐฉ์‹๊ณผ IDE ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ ๊ณ ๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Yarn PnP SDK๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธธ๋ž˜ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š”๊ฑธ๊นŒ?

1. ๊ฐ„์ ‘ ํŒจํ‚ค์ง€ ์ƒ์„ฑ

  • SDK๋Š” ์‹ค์ œ ํŒจํ‚ค์ง€๋“ค์„ ๊ฐ์‹ธ๋Š” ๊ฐ„์ ‘ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  • ์ด ๊ฐ„์ ‘ ํŒจํ‚ค์ง€๋Š” ์‹ค์ œ ํŒจํ‚ค์ง€๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— Yarn PnP ๋กœ๋”๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

2. Yarn PnP ๋กœ๋” ์„ค์ •

  • Yarn PnP๋Š” Node.js ๋Ÿฐํƒ€์ž„ ๋‚ด์—์„œ ์‚ฝ์ž…๋˜๋Š” ํŠน๋ณ„ํ•œ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ฐ„์ ‘ ํŒจํ‚ค์ง€๋Š” ์ด ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ณ  ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

3. IDE ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ง€์›

  • ๋งŽ์€ IDE ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์ž์‹ ์ด ๋ž˜ํ•‘ํ•œ ํŒจํ‚ค์ง€(Prettier, TypeScript ๋“ฑ)๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Yarn PnP๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • SDK๋Š” ์ด๋Ÿฌํ•œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด Yarn PnP ๋ฐฉ์‹์„ ์ธ์‹ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ด์ œ Yarn PnP์—์„œ SDK๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š”์ง€ ์•Œ์•˜์œผ๋‹ˆ ์ ์šฉ ํ•  ์ฐจ๋ก€์ด๋‹ค!

1. VSCode Extension์—์„œ ZipFS - a zip file system ์„ค์น˜ํ•˜๊ธฐ(์•„๋ž˜ ์‚ฌ์ง„ ์ฒ˜๋Ÿผ ์ƒ๊ธด ๊ฒƒ ์„ค์น˜)

2. ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜๊ธฐ(์‹คํ–‰ ํ•˜๋ฉด .vscode/settings.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค)

yarn dlx @yarnpkg/sdks vscode

3. VSCode์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ TS ์„ค์ • ํ™œ์„ฑํ™” ํ•˜๊ธฐ

  • Ctrl + Shift + P ๋ˆŒ๋Ÿฌ์„œ VSCode ์„ค์ • ์—ด๊ธฐ

  • Select TypeScript Version ์ž…๋ ฅํ•ด์„œ ํด๋ฆญํ•˜๊ธฐ

  • Use Workspace Version or ์ž‘์—… ์˜์—ญ ๋ฒ„์ „ ์‚ฌ์šฉ ํด๋ฆญํ•˜๊ธฐ

๐Ÿ”ฅ ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์„ค์ • ์ค‘์— Use Workspace Version or ์ž‘์—… ์˜์—ญ ๋ฒ„์ „ ์‚ฌ์šฉ ์ด ์˜ต์…˜์ด ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค...

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์—ฌ๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋‹ค!

์ถ”๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Select TypeScript Version ํ•ญ๋ชฉ์ด ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์•„๋ฌด ํŒŒ์ผ๋„ ์—ด์ง€ ์•Š๊ณ  Select TypeScript Version ์ž…๋ ฅํ•ด๋„ ์ € ํ•ญ๋ชฉ์ด ๋‚˜์˜ค์ง€ ์•Š์œผ๋‹ˆ .pnp.cjs๊ฐ™์€ ์•„๋ฌด ํŒŒ์ผ์„ ํด๋ฆญํ•˜๊ณ  Select TypeScript Version ์ž…๋ ฅ์„ ํ•ด์•ผํ•œ๋‹ค.

Use Workspace Version or ์ž‘์—… ์˜์—ญ ๋ฒ„์ „ ์‚ฌ์šฉ ์ด๋Ÿฐ ์˜ต์…˜์ด ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

  • ํด๋” ๊ตฌ์กฐ ํ™•์ธํ•˜๊ธฐ, ๋‚˜๋Š” playground๋ผ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ VSCode๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด VSCode์—์„œ ์–ด๋–ค ํด๋”์—์„œ Yarn Berry PnP ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ต์…˜์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.
    โž” Yarn PnP๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ํด๋”๋ฅผ ์ง์ ‘ ์—ด๊ธฐ

playground๋ผ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ VSCode๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

Yarn PnP๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ํด๋”๋กœ VSCode๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ๊น ์˜ต์…˜์ด ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜จ๋‹ค!

playground๋ผ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ VSCode๋ฅผ ์ผœ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ง ๋ชป์ฐพ์•˜๋‹ค... ์•„์‹œ๋Š” ๋ถ„์€ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...!


์ด์ œ๋Š” ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ์ธ์‹ํ•œ๋‹ค!

๐Ÿ’ก ๋‹จ์ˆœํžˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™œ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์ง€๊ณ  ๊ทผ๊ฑฐ๋ฅผ ์ฐพ๋Š” ์‚ฌ๊ณ  ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ค ๋ณด๋‹ˆ๊น ๊ธฐ์กด๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค!


๐Ÿ™ƒ ๋„์›€์ด ๋˜์—ˆ๋˜ ์ž๋ฃŒ๋“ค

Yarn ๊ณต์‹ ๋ฌธ์„œ
yarn berry์—์„œ์˜ cannot find module ์—๋Ÿฌ ํ•ด๊ฒฐ
yarn berry vscode module ๋ชป์ฐพ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด

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