npm install์ด ERESOLVE์์ ๋งํ ๋ โ eslint ์ถฉ๋๊ณผ @heroui ๋ฒ์ ETARGET, ๊ทธ ๋ค์ ์จ 404
1. ์ํฉ
๋ณด๋ฅํ๋ ํ๋ก์ ํธ(Next.js 14.2.3 + HeroUI)๋ฅผ ๋ค์ ์ด์ด ๋ก์ปฌ์์ ๋๋ ค ๋ณด๋ ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ npm run dev๋ถํฐ ์ด๋ ๊ฒ ๋์๋ค.
npm run dev
> next dev
sh: next: command not foundnext๊ฐ ์๋ค๋ ๊ฑด ์ค์น๊ฐ ๋๋ ์ ์ด ์๋ค๋ ๋ป์ด๋ค. npx install next๋ ํด ๋ดค์ง๋ง could not determine executable to run๋ง ๋์๋ค. ๊ฒฐ๊ตญ npm install๋ถํฐ ๋ค์ ๋ด์ผ ํ๋ค.
2. ์ฒซ ๋ฒ์งธ ๋ฒฝ: ERESOLVE
npm install์ ์ด ์๋ฌ๋ก ๋ฉ์ท๋ค. (ํต์ฌ ์ค๋ง ๋จ๊ฒผ๋ค)
npm error code ERESOLVE
npm error While resolving: next-app-template@0.0.1
npm error Found: eslint@8.56.0
npm error Could not resolve dependency:
npm error peer eslint@"^3 || ^4 || ^5 || ^6 || ^7" from eslint-plugin-jsx-a11y@6.4.1AI๊ฐ ์ง์ ์์ธ์ ์ด๋ฌ๋ค. eslint-plugin-jsx-a11y@6.4.1์ด ESLint 7 ์ดํ๋ง ์ง์ํ๋๋ฐ ํ๋ก์ ํธ๋ ESLint 8.56.0์ ์ฐ๊ณ ์์ด์ ์์กด์ฑ ํธ๋ฆฌ๊ฐ ๋ง์ง ์๋๋ค๋ ๊ฒ์ด๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ๋์๋ค.
- ๋ฐฉ๋ฒ 1(์ถ์ฒ): ํ๋ฌ๊ทธ์ธ ๋ฒ์ ์ ์ฌ๋ฆฐ๋ค.
npm install -D eslint-plugin-jsx-a11y@^6.9.0(6.5 ์ดํ๋ถํฐ ESLint 8 ์ง์) - ๋ฐฉ๋ฒ 2: ์ถฉ๋์ ๋ฌด์ํ๊ณ ์ผ๋จ ์ค์น๋ง ํ๋ค.
npm install --legacy-peer-deps
์ด ์๋ฌ๋ ๋ฆฐํธ ํ๋ฌ๊ทธ์ธ ๋ฌธ์ ๋ผ์ ์ฌ์ดํธ ๋์๊ณผ๋ ๋ฌด๊ดํ๊ณ , npm run lint๋ฅผ ๋๋ฆด ๋๋ง ์ํฅ์ด ์๋ค๊ณ ํ๋ค. ์ค์ ๋ก ๋ด ํฐ๋ฏธ๋ ๊ธฐ๋ก์ ๋ณด๋ฉด --legacy-peer-deps๋ก ๋์ด๊ฐ๋ค.
[๋ณด๊ฐ: ๋ฐฉ๋ฒ 1(๋ฒ์ ์ฌ๋ฆฌ๊ธฐ) ๋์ ๋ฐฉ๋ฒ 2๋ฅผ ์ด ์ด์ ]
3. ๋ ๋ฒ์งธ ๋ฒฝ: ETARGET
ESLint ์ถฉ๋์ ๋์ด๊ฐ๋๋ฐ ์ด๋ฒ์ ๋ค๋ฅธ ์๋ฌ๊ฐ ๋์๋ค.
npm error code ETARGET
npm error notarget No matching version found for @heroui/button@2.0.38.์์ธ์ ๋ฒ์ ๋ฒํธ์๋ค. 2.0.38์ ์์ @nextui-org/button์ ๋ฒ์ ์ด๋ค. ํจํค์ง ์ด๋ฆ๋ง @nextui-org/*์์ @heroui/*๋ก ๋ฐ๊พธ๊ณ ๋ฒ์ ๋ฒํธ๋ ๊ทธ๋๋ก ๋ ์ํ์๋๋ฐ, @heroui/*๋ ๋ฒ์ ์ด ์๋ก ์์ํด์ ๊ทธ ๋ฒํธ๊ฐ npm์ ์๋ค.
์ฌ๊ธฐ์ ํ๋ ๋์ ๋ ๊ฒ ์๋ค. AI๊ฐ ์ฒ์ ๋ฐ์ package.json์๋ @nextui-org/*๋ง ์์๋ค. ์ฆ AI๊ฐ ๋ณธ ์ฝ๋์ ๋ด ๋ก์ปฌ ์ฝ๋๊ฐ ๋ฌ๋๋ค. ๋ก์ปฌ์ ์ด๋ฏธ HeroUI๋ก ๋ฐ๊พผ ์ต์ ๋ฒ์ ์ด์๊ณ , ์๋ฌ ๋ก๊ทธ๋ฅผ ๊ทธ๋๋ก ๋ถ์ฌ ๋ฃ์ ๋๋ถ์ ๊ทธ ์ฐจ์ด๊ฐ ๋๋ฌ๋ฌ๋ค.
ํด๊ฒฐ์ @heroui/* ๋ฒ์ ์ ํ๊บผ๋ฒ์ latest๋ก ๋ฐ๊พธ๋ ๊ฒ์ด์๋ค. macOS ๊ธฐ์ค ๋ช
๋ น์ด๋ค(sed -i ''๋ macOS ๋ฌธ๋ฒ).
grep -n "heroui\|nextui" package.json
sed -i '' -E 's#("@heroui/[^"]+": )"[^"]+"#\1"latest"#' package.json
npm install --legacy-peer-deps์ด๋ฒ์๋ ์ค์น๊ฐ ๋๋ฌ๋ค. added 669 packages, 2๋ถ์ฏค ๊ฑธ๋ ธ๋ค.
๋ค๋ง latest๋ ์์๋ฐฉํธ์ด๋ค. AI๋ ์ค์น๊ฐ ๋๋ฉด npm ls @heroui/react๋ก ์ค์ ์ค์น๋ ๋ฒ์ ์ ํ์ธํ๊ณ , latest ๋์ ๊ทธ ๋ฒ์ ์ผ๋ก ๊ณ ์ ํด์ ์ปค๋ฐํ๋ผ๊ณ ํ๋ค. ์ด ํ๋ก์ ํธ์๋ .npmrc์ package-lock=false๊ฐ ์์ด์ package-lock.json์ด ์์ฑ๋์ง ์๊ณ , ์ค์นํ ๋๋ง๋ค ๋ฒ์ ์ด ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ์ค์ ์ง์ฐ๊ณ lock ํ์ผ์ ์ปค๋ฐํด ๋๋ฉด ์ด๋ฐ ์ฌํ ๋ฌธ์ ๊ฐ ์ค์ด๋ ๋ค.
4. ์ธ ๋ฒ์งธ: ์ค์น๋ ๋๋๋ฐ 404
์๋ฒ๋ ๋ด๋ค. ๊ทธ๋ฐ๋ฐ ํ๋ฉด์ 404์๋ค.
โฒ Next.js 14.2.3
โ Ready in 2.9s
โ Compiling /_not-found ...
GET / 404 in 1474msAI์ ์ค๋ช
์ ์ด๋ฌ๋ค. Ready๋ ์๋ฒ๊ฐ ๋ด๋ค๋ ๋ป์ด๊ณ , 404๋ / ๊ฒฝ๋ก์ ํด๋นํ๋ ํ์ด์ง๋ฅผ ๋ชป ์ฐพ์๋ค๋ ๋ป์ด๋ค. ์์กด์ฑ๊ณผ๋ ๋ณ๊ฐ์ ๋ฌธ์ ์ด๊ณ ๊ฑฐ์ ํญ์ app/page.tsx๋ฅผ ๋ชป ์ฐพ์ ๋ ๋์จ๋ค. ํ์ธํ ๊ฒ์ ์ธ ๊ฐ์ง์๋ค.
app/page.tsx๊ฐ ์๊ฑฐ๋app/์ด ๋น์ด ์๋ค:git status์D app/page.tsx์ฒ๋ผ ์ญ์ ํ์๊ฐ ์์ผ๋ฉดgit restore app/page.tsxsrc/app/์ด ๋ฐ๋ก ์๋ค: ๋ฃจํธ์app/์ด ์์ผ๋ฉด Next๋ ๊ทธ๊ฒ๋ง ๋ณด๊ณsrc/app์ ๋ฌด์ํ๋ฏ๋ก ํ๋๋ก ํฉ์ณ์ผ ํจapp/page.tsx๊ฐ ์๋๋ฐ๋ 404:rm -rf .nextํnpm run dev๋ก ์บ์ ์ ๊ฑฐ
ls app
ls src 2>/dev/null
git status --short | head -20์ด ๋ํ๋ ์ฌ๊ธฐ์ ๋๋ฌ๋ค. ์ ๋ช ๋ น์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ฌ ๋ฃ๊ธฐ ์ ์ด๋ผ, 404์ ์ค์ ์์ธ์ ์์ง ํ์ ๋์ง ์์๋ค.
[๋ณด๊ฐ: ls app๊ณผ git status --short ๊ฒฐ๊ณผ, ๊ทธ๋ฆฌ๊ณ 404์ ์ค์ ์์ธ๊ณผ ํด๊ฒฐ]
๊ฐ์ด ๋์จ ๊ฒฝ๊ณ ๋ ๊ธฐ๋กํด ๋๋ค.
21 vulnerabilities๊ฐ ๋จ์ง๋งnpm audit fix --force๋ ํ์ง ์๊ธฐ๋ก ํ๋ค. ๋ฒ์ ์ด ํฌ๊ฒ ๋ฐ๋์ด ํ๋ก์ ํธ๊ฐ ๊นจ์ง ์ ์๋คnext@14.2.3์ ๋ณด์ ํจ์น๊ฐ ๋์จ ๋ฒ์ ์ด๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ๋ด๋ค. ์ฌ์ดํธ๊ฐ ๋์๊ฐ ๋ค ์ต์ 14.2.x๋ก ์ฌ๋ฆด ์์ ์ด๋คmain*ํ์๋ ์ปค๋ฐ ์ ๋ ๋ณ๊ฒฝ์ด ์๋ค๋ ๋ป์ด๋ค.sed๋กpackage.json์ ๋ฐ๊ฟจ์ผ๋ ๋์ ํ์ธ ํ ์ปค๋ฐํ๋ค
์ ๋ฆฌ
- ERESOLVE๋ peer ์์กด์ฑ ์ถฉ๋์ด๋ค. ๋ฒ์ ์ ์ฌ๋ฆฌ๋ ๊ฒ ์ ์์ด๊ณ ,
--legacy-peer-deps๋ ์ผ๋จ ๋์ด๊ฐ๋ ์ฐํ๋ค - ํจํค์ง ์ด๋ฆ์ด ๋ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(
@nextui-orgโ@heroui)๋ ๋ฒ์ ๋ฒํธ๋ ์๋ก ํ์ธํ๋ค - AI๊ฐ ๋ณธ ํ์ผ๊ณผ ๋ด ๋ก์ปฌ ํ์ผ์ ๋ค๋ฅผ ์ ์๋ค. ์๋ฌ ๋ก๊ทธ๋ฅผ ๊ทธ๋๋ก ๋ถ์ฌ์ผ ์ฐจ์ด๊ฐ ๋นจ๋ฆฌ ๋๋ฌ๋๋ค
Ready๊ฐ ๋ ๋ 404๊ฐ ๋์ฌ ์ ์๋ค. ๋ผ์ฐํ ๋ฌธ์ ์ด๊ณ ,app/page.tsx๋ถํฐ ํ์ธํ๋ค- lock ํ์ผ์ด ์์ผ๋ฉด ์ค์นํ ๋๋ง๋ค ๋ฒ์ ์ด ๋ฌ๋ผ์ง ์ ์๋ค
๋ค์ ๊ธ ์๊ณ
์ด ์ ์ฝ๋๋ฅผ ์ด์ด ๊ฐ๋ ๋์ ์น์ ์๋ก ๋ง๋ค๊ธฐ๋ก ํ ๋ค, ์ ์น์ ์ง ์๋ฒ์ git push ํ ๋ฒ์ผ๋ก ๋ฐฐํฌํ ์ด์ผ๊ธฐ๋ฅผ ์ด๋ค.
