0330

FE

[SvelteKit] "[404] GET icon images"은 뭐지?!

| 서론

SvelteKit 기반의 Re:Log 프로젝트를 npm run dev로 실행했는데, 시작하자마자 콘솔에 아래와 같은 로그가 떴습니다.

TypeScript
[404] GET /apple-touch-icon-precomposed.png
[404] GET /apple-touch-icon.png
[404] GET /favicon.ico

분명 페이지는 잘 열리는데 빨간 글씨로 [404]가 뜨게 되면서, 개발하기도 전에 당황스러움이 찾아왔습니다,, 하하


처음엔 “vite 설정이 잘못된 건가?” 했지만, 사실 이건 정상적인 현상이었습니다.

| 원인 분석

이 문제는 Vite나 SvelteKit의 오류가 아니라, 브라우저의 자동 요청 때문이었습니다.

Safari나 Chrome 같은 브라우저는 사이트를 열 때 아래 세 가지 이미지를 자동으로 찾습니다.

  • /favicon.ico → 탭 상단에 보이는 아이콘

  • /apple-touch-icon.png → iOS 홈 화면 바로가기용

  • /apple-touch-icon-precomposed.png → 구형 iOS용 (그림자 효과 X)

그런데 SvelteKit의 static/ 폴더 안에 이 파일들이 없으면 Vite 개발 서버가 “그런 파일 없음!”이라며 [404] 로그를 남기는 로직이더라고요.


즉, 사이트는 멀쩡히 작동하지만 브라우저가 못 찾은 파일만 404로 찍힌 거예요.

| 파일 생성

이 문제를 해결하기 위해 아이콘 파일을 직접 생성해주면 됐었는데요?

https://favicon.io/favicon-generator/

여러 사이트 중에서도 favicon.io에서 간단히 만들 수 있었습니다.

해당 페이지에 접속한 뒤엔, 위의 사진처럼 여러 정보들을 아래와 같이 기입한 뒤에 다운로드를 할 수 있었습니다.

  1. 텍스트: R

  2. 배경: Rounded

  3. 폰트: Marhey

  4. 배경색: #55F

  5. 다운로드 후 압축 해제

→ 안에 favicon.ico, apple-touch-icon.png 파일이 포함되어 있습니다.

하지만, 에러 메세지에 있었던 'apple-touch-icon-precomposed.png' 파일의 경우에는

해당 파일들을 static 폴더에 추가한 뒤에, apple-touch-icon.png 파일의 이름만 바꿔주면 됐었습니다.

TypeScript
cp static/apple-touch-icon.png static/apple-touch-icon-precomposed.png

| 파일 추가 후 npm run dev

static/ 폴더 구조는 이렇게 변경됩니다

이제 다시 실행하면, 더 이상 [404] GET /apple-touch-icon.png 로그가 뜨지 않게 됩니다!

| 결론

결론적으로 이 현상은 브라우저가 자동으로 요청한 아이콘 파일이 없어서 생긴 404 로그였습니다.

즉, 오류가 아니라 단순한 정보성 로그이며, 필요하다면 static/ 폴더에 아이콘 파일만 추가해주면 깔끔하게 해결된다는 점을 경험할 수 있었습니다.