Next.js sw.js 404 오류 해결

2025. 4. 22. 18:43·웹개발/Next.js
728x90

새 프로젝트를 시작했는데, 콘솔에 계속 이상한 요청이 찍혔다.
/sw.js, _next/static/chunks/... 등등 404 오류가 반복적으로 발생했다.
심지어 내가 명시적으로 서비스워커를 등록하지도 않았는데 말이다.
왜일까?

 

처음엔 .next 폴더 캐시 문제인 줄 알았다

Next.js 프로젝트에서 정적 파일이 404 나는 경우는 대부분 .next/ 폴더 때문이라고 알고 있어서, 바로 이렇게 지웠다.

rm -rf .next
yarn dev

그런데도 sw.js, _next/static/... 이런 요청들이 계속 404 Not Found로 찍히는 거다.
심지어 새 프로젝트인데다가 없는 파일인데도 말이다.
그래서 처음에는 “아 이거 Vercel 캐시인가?” “정적 경로 꼬였나?” 별의별 생각을 다 했는데…

 

원인은 다음과 같았다.

전 프로젝트에서 PWA + 서비스워커(sw.js) 사용했다. 브라우저는 한 번 등록된 service worker를 계속 사용한다.

도메인 기준으로 등록되기 때문에, 같은 주소(localhost:3000등)에서 실행하면 서비스워커가 재실행된다.

하지만 새 프로젝트에는 sw.js가 없기 때문에 404 에러가 발생하는 것이다,

 

여기서, 🔧 Service Worker란?

Service Worker는 브라우저가 백그라운드에서 동작하는 스크립트다.
우리가 페이지를 닫아도 계속 실행될 수 있고, 네트워크 없이도 앱이 동작하게 해주는 리소스.

요약하면,

  • 📦 오프라인에서도 앱 실행 가능하게 만들기 (캐시)
  • 🔔 푸시 알림 받기
  • 🌐 네트워크 요청 가로채서 캐싱 또는 응답 가공하기
  • ⚡ 웹 앱을 네이티브 앱처럼 동작하게 만들기 (PWA 핵심 기능)

즉, 브라우저에 등록해서 계속 살아있는 JS 파일이고, 내가 직접 지우지 않으면 다음 실행에도 계속 작동한.

 

그러면 📄 sw.js는?

sw.js는 service worker를 정의한 자바스크립트 파일 이름이야.
보통 public/sw.js에 위치하고, 앱이 처음 로딩될 때 다음처럼 등록된다.

if ("serviceWorker" in navigator) {
  window.addEventListener("load", () => {
    navigator.serviceWorker.register("/sw.js");
  });
}

이 코드가 있으면 브라우저는 /sw.js를 요청해서 받아오고, 그걸 등록해서 백그라운드에서 돌리기 시작한다.
문제는 한 번 등록된 sw는 프로젝트를 새로 만들어도, 파일이 없어도 계속 요청된다... 그래서 /sw.js 404가 계속 뜨는 거다.

 

해결방법은 다음과 같다.

브라우저 서비스워커 캐시 삭제하면 된다.

 

1. 크롬에서 개발자 도구 (F12) 열기

2. Application 탭 클릭

 

3. 좌측 메뉴 → Service Workers 선택

4. Unregister 눌러서 다 지우기

5. Clear Storage 이동

6. Clear Storage 가서 Clear site data 클릭

이렇게 하면 sw.js 404 오류가 말끔히 해결되고 원래의 프로젝트가 정상 렌더링 된다.

 

728x90

'웹개발 > Next.js' 카테고리의 다른 글

Next.js Image 컴포넌트에서 ... "auto" 경고 해결법  (0) 2025.04.15
Next.js App Router에서 MUI 쓰면 생기는 'Hydration failed' 에러 해결방법 (with Emotion 설정)  (0) 2025.04.10
Error 상태코드 종류 모음  (0) 2025.04.09
Next.js에서 Axios로 JWT 토큰 인증 API 호출하기  (0) 2025.03.28
Next.js의 App Router와 Page Router 차이점, 무엇을 쓰는게 좋을까요?  (1) 2025.01.27
'웹개발/Next.js' 카테고리의 다른 글
  • Next.js Image 컴포넌트에서 ... "auto" 경고 해결법
  • Next.js App Router에서 MUI 쓰면 생기는 'Hydration failed' 에러 해결방법 (with Emotion 설정)
  • Error 상태코드 종류 모음
  • Next.js에서 Axios로 JWT 토큰 인증 API 호출하기
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JS
    데이터전송
    componique
    react
    웹개발
    자바스크립트
    리액트
    TCP
    tailwind
    프로그래밍
    github
    NextJs
    ui컴포넌트
    프론트엔드개발
    상태관리
    JavaScript
    트랜스포트계층
    코딩
    네트워크
    프론트엔드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
Next.js sw.js 404 오류 해결
상단으로

티스토리툴바