(리액트) Uncaught SyntaxError: Unexpected token '<' (at ...)
              
          2023. 4. 6. 09:59ㆍNode js/React
index.html 소스 :
<!-- index.html -->
<html>
  <body>
    <div id="app"></div>
    <script src="https://unpkg.com/react@17/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
    <script type="text/javascript">
      const app = document.getElementById('app');
      ReactDOM.render(<h1>Develop. Preview. Ship. 🚀</h1>, app);
    </script>
  </body>
</html>이것을 브라우저에서 열면 Uncaught SyntaxError: Unexpected token '<' (at ...) 가 발생한다.

문제의 원인은
ReactDOM.render(<h1>Develop. Preview. Ship. 🚀</h1>, app);
정확히 짚어 보면,
<h1>Develop. Preview. Ship. 🚀</h1>
때문이다. 이렇게 생긴 코드를 JSX 라고 하며, 유효한 javascript 가 아니기 때문에 웹 브라우저가 인식하지 못하는 것이다.
이것을 해결하려면
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>를 index.html 에 삽입하고 JSX 가 들어 있는 줄을
<script type="text/jsx">로 감싸면 된다.
바벨 적용 후 index.html 소스 :
<body>
<div id="root"></div>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> <-- 여기
<script type="text/jsx">                                                 <-- 여기
  const root = document.getElementById('root');
  ReactDOM.render(<h1>Develop. Preview. Ship. 🚀</h1>, root);
</script>
</body>

'Node js > React' 카테고리의 다른 글
| 리액트 컴포넌트끼리 중첩하기 (0) | 2023.04.06 | 
|---|---|
| HTML 을 리액트 컴포넌트로 나누기 (0) | 2023.04.06 | 
| React 클래스형 + (코드 분리 방식) (0) | 2023.04.05 | 
| React 함수형 선언방식 (0) | 2023.04.05 | 
| React 방식으로 요소 추가하기 (0) | 2023.04.05 |