avatar
Published on

React Uncaught Syntax Error: unexpected token '<' 리액트 에러

Authors
  • avatar
    Name
    Haneul
    Twitter

React Uncaught Syntax Error: unexpected token < 리액트 에러

새로운 피쳐를 작업한 후에 배포까지 잘 완료했다고 생각했는데

다음날 사이트를 접속하면 빈 화면만 보이는 것을 발견했다.

개발자 도구에 보이는 에러는

Uncaught SyntaxError: Unexpected token '<'

원인

얼핏 드는 생각으로는 JS 파일을 잘 못 읽어서 생기는 문제인 것 같았다.

구글링을 해보니 리액트 개발할 때 꽤나 자주 발생하는 오류이다.

원인으로는 상황에 따라 여러가지 일 수 있으나

브라우저의 캐싱때문에 index.html 파일이 배포 전의 파일이라 배포 전 번들링한 js파일을 참조하고 있어 발생하기도 한다.

'새로고침'을 통해 파일을 제대로 불러와서 해결되기도 한다.

또는, 웹팩에서 발생하거나 변수오류 등 여러가지가 있다.

해결

방법 1.

index.html 파일의 <head> 태그 안에 아래 코드를 넣는다.
하지만 base href 때문에 라우팅 사이드 이펙트 이슈가 있는 확인해야 한다.

<base href="/">

방법 2.

index.html의 <script> 태그에 경로 설정이 잘 되어 있는지 확인해본다.

// src의 "." 을 제거한다.
<script src="./static/js/main.dfd.js">

방법 3.

리액트의 package.json 파일에 "homepage" 프로퍼티를 추가한다.

"homepage": ".",

방법 4.

새로 배포된 파일을 참조할 수 있도록 캐시를 안하도록 설정한다.
index.html 파일 <head> 태그 안에 메타 정보를 추가한다.

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

나는 일단 첫번째 방법으로 했더니 바로 해결되었다.


참고 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Unexpected_token https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base