Next 프로젝트 개발 중, 아래와 같은 Fast Refresh 오류 메시지가 나타났다.
○ Compiling /404 ...
✓ Compiled /404 in 850ms (461 modules)
GET /_next/static/webpack/9720620fcfe680fa.webpack.hot-update.json 404 in 1811ms
⚠ Fast Refresh had to perform a full reload. Read more: https://nextjs.org/docs/messages/fast-refresh-reload
이 메시지는 개발 중 Hot Module Replacement(HMR)가 실패하여 전체 페이지를 리로드했다는 뜻이다.
치명적인 오류는 아니지만, 반복될 경우 개발 효율에 영향을 줄 수 있다.
이 오류는 보통 Next.js 개발 환경에서 다음과 같은 경우에 발생한다.
node_modules 내부 의존성 문제dynamic import가 변경되는 경우🌟 즉, Fast Refresh의 정상적인 대처 과정이며 프로덕션 빌드에는 영향을 미치지 않는다.
📌 HMR(Hot Module Replacement)이란,
HMR은 코드 변경 시 전체 페이지를 새로고침하지 않고, 변경된 모듈만 교체해 상태를 유지한 채로 업데이트할 수 있도록 돕는 기능이다.
Next.js는 이를 위해 Fast Refresh를 사용하며, 실패 시 전체 리로드가 발생한다.
dynamic import 추가 등으로 HMR 캐시가 꼬일 수 있다.# 서버 재시작
Ctrl + C # 개발 서버 종료
pnpm dev # 다시 실행
node_modules 또는 .next 빌드 캐시 문제가 원인일 수 있다.# 의존성 및 빌드 캐시 제거
rm -rf node_modules .next
rm pnpm-lock.yaml
pnpm store prune # 사용하지 않는 캐시 정리
# (선택) 글로벌 캐시까지 완전히 정리할 경우
pnpm store clear # ⚠️ 모든 프로젝트 캐시 삭제
# 의존성 재설치
pnpm install
Remove-Item -Recurse -Force .\node_modules\
Remove-Item -Force .\pnpm-lock.yaml
✅ 명령어 실행 후 PC를 재부팅하면 환경 정리가 더 확실해진다.
dynamic import 시점 최적화dynamic import()나 빈번한 변경은 HMR을 불안정하게 만들 수 있음dynamic import를 최소화하거나 구조를 단순화할 것// 조건부 dynamic import 예시 (주의 필요)
const Component = condition
? dynamic(() => import('./ComponentA'))
: dynamic(() => import('./ComponentB'));
🛡️ 이 메시지는 개발 환경에서만 발생하며,
프로덕션 빌드 (pnpm build)에서는 Fast Refresh 기능이 작동하지 않기 때문에 전혀 영향이 없다.