Published 2024. 8. 1. 12:08
해결 방법
- 문제가 되는 `jsx` 파일의 이동 경로를 `a`태그로 설정했는지 `Link to`로 설정했는지 확인하기
- Github Pages는 SPA (Single Page Appliction)를 지원하지 않는다.
문제 해결 흐름
영화 소개 사이트를 클론코딩하고 내 로컬에서 동작도 잘 되길래 빌드 했다.
https://namani31.github.io/REACT_MOVIE/ 를 들어가서 about 메뉴를 눌러봤더니 404 에러가 떴다.
home이나 detail은 잘 들어가지는 걸 보니 about에 문제가 있단 걸 알아서 코드를 확인해봤다.
import "./Navigation.css";
import {Link} from "react-router-dom";
export function Navigation() {
return (
<div className='nav'>
{/* <a href="/">Home</a>
<a href="/about">About</a> */}
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</div>
);
}
주석으로 처리되어 있는 코드를 보면 `a`태그를 사용하고 있다.
`a` 태그든 `Link` 컴포넌트를 사용하든 경로를 잡아주는 건 똑같은 거 아닌가? 했지만 전혀 달랐다.
- `a` 태그를 클릭하면 브라우저는 해당 경로로 이동하면서 페이지를 리로드 한다.
- 이 과정에서 Github Pages는 서버에서 그 경로에 해당하는 파일을 찾으려고 시도한다.
- `/about` 페이지로 이동하려고 하면 `/about` 경로에 있는 파일을 찾는다는 뜻이다.
- 그러나 SPA 에서는 이런 파일이 존재하지 않으므로 404 오류가 발생한다.
Github Pages는 SPA (Single Page Appliction)를 지원하지 않는다.
`Link` 컴포넌트는 클라이언트 사이드 라우팅을 관리한다.
*클라이언트 사이드 라우팅: 경로가 바뀌는 경우, 서버에 별다른 요청을 보내지 않고 클라언트의 브라우저 단에서만 여러 페이지를 바꾸며 방문하는 기능
1. `Link` 를 클릭하면 브라우저는 페이지를 리로드 하지 않는다.
2. 대신 클라이언트 사이드에서 경로를 변경한다.
3. 이럴 경우, 서버에 새로운 요청을 보내지 않으므로 404 오류가 발생하지 않는다.
`a` 태그를 주석으로 처리하고 `Link to`로 다시 경로를 잡아줬더니 404 에러가 발생하지 않는다.
새로고침을 하니까 404 에러가 뜨긴 하지만...
출처
1. https://stackoverflow.com/questions/32709655/datagrip-cannot-apply-changes-this-table-is-read-only-cell-editor-changes-cannohttps://codingdiary99.tistory.com/5
'Problem Solving' 카테고리의 다른 글
[Git][PS] push to origin has encountered a problem 오류 해결 (0) | 2024.09.23 |
---|---|
[PS][React] react-scripts 은(는) 내부 또는 외부 명령 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다 (0) | 2024.07.20 |
[PS][Git] There isn't anything to compare 해결 (0) | 2024.01.05 |
[PS][Java] Open JDK 8 설치하기 (0) | 2023.12.04 |
[PS] java.lang.IllegalStateException: Module entity with name - gradle 빌드 문제 (0) | 2023.10.28 |