Github Pages 설정
레파지토리 → Settings → Pages → Branch: 처음엔 main으로 → Save

리액트 페이지 배포
gh-pages 패키지
Github Pages로 배포하기 위해서는 Github Pages에서 지원하는 패키지인 gh-pages 설치
1 | |
package.json 수정
“script” 파일에 내용 추가
1 | |
아래 쪽에 “homepage” 항목 추가하고 호스팅 될 주소 설정
1 | |
빌드와 배포
배포 전 리액트 프로젝트 build 작업을 거쳐야함.
수정한 파일들을 add 와 commit 으로 변경내용 저장 후 git push 로 업로드.

1 |
|
gh-pages로 page 경로 변경
레파지토리 → Settings → Pages → Branch: gh-pages
문제
문제 1.
모듈을 찾을 수 없다는 오류 발생…

package.json과 node_modules 삭제하고 다시 npm i 하고 진행.
문제 2.
파일을 찾을 수 없다는 오류. 일단 전과 다른 오류면 해결되고 있다.
1 | |
혹시 다시 install 하면서 문제가 생긴건가 생각하고 node_modules를 삭제하고 다시 install → 안됨.
왜 파일이 없다고 나올까라는 생각으로 접근해보니, Vercel로 배포한 경험이 있어서 build 폴더가 아닌 dist 폴더가 생성되어있었음.
deploy를 gh-page -d dist 로 변경
1 | |
git push → npm run build → npm run deploy 까지 하고 Actions 탭에서 Action이 다 되기를 기다리면 된다.

문제 3.
url로 사이트 로드했는데 빈화면이 나오고 콘솔에는 아래와 같은 오류 발생
1 | |
오류나는 경로를 보면 나의 레파지토리 이름이 빠져있는 것을 발견.
설정하는 방법을 찾아봄.
vite.config.js 파일에 export default 설정을 싹 지우고 아래와 같이 변경했음.
1 | |
하지만 계속 같은 오류가 발생.
문제 4.
이 문제는 방법을 몰라서 이것저것 하면서 잡다한 오류들이 많이 났다.
뭔가 다 안되니까 gh-page 브랜치로 checkout 후 다 삭제하고 다시 브랜치를 설치하고 싶은 마음에
gh-page 브랜치로 checkout하고 손댔더니 더 이상해지고 돌이킬 수 없어질 것 같아서 main으로 다시 checkout.
이때, 포기할까 생각을 100번 넘게 했다.
하지만 무조건 해결해야 잠을 잘 것 같았고, 진정하고 차근차근 해보았음.
gh-page 를 재설치하고 처음부터 다시 해보니까 전의 오류는 넘어갔고 다음 오류가 뜸.
오케이. 한 단계씩 해결되고 있다는 뜻.
문제 5.
이번에는 리액트를 찾을 수 없다고 한다.
1 | |
React in not defined 오류는 React가 현재 스코프에서 정의되지 않아서 발생한다고 함. 일반적으로 React 가 제대로 import 되지 않거나 빌드 과정에서 문제가 생긴 경우에 발생한다는데,
문제 3. 에서 vite.config.js 설정하면서
1 | |
이렇게 되어있던 부분도 다 지우고 설정해줬던 기억이 있다… 저기 설정하면서 react 플러그인을 삭제해버린 것.
다시 추가해줬음.
1 | |
혹시 몰라서
1 | |
React 관련 플러그인과 패키지 다시 설치하고
1 |
|
문제 6.
이제 오류없이 빈화면이 나오기 시작.
오히려 오류가 안나오고 빈화면 나오니까 더 미쳐 버릴 것 같음.
다시 브랜치를 삭제하고 다시 설치하려고 했으나, 실패… 그래서 다시 검색을 더 해보기 시작했음.
마침 빈화면 나온 사람 발견!!! 마치 구세주 같았다.
<BrowserRouter basename={process.env.PUBLIC_URL}>
이렇게 설정하라는데 .env 파일도 못찾겠고 그냥 때려 박았다.
1 | |
드디어 화면이 나옴!!!
문제 7.
하지만 이미지가 안나옴.

딱 보니까 public 파일에 있던 이미지만 안나오고 있음. 콘솔 오류 보면 경로 문제인것같아서 img도 경로를 일단 강제로 때려 넣음.
이렇게 강제로 설정해주면 안좋다… 나중에 경로가 바뀌면 다 찾아서 일일히 바꿔줘야하니까.
.env 파일 만드는거 어렵지 않더만… 그냥 .env 파일 하나 만들고 설정해주면 되더만…
PUBLIC_URL=/sidepj_bose
{process.env.PUBLIC_URL}
무튼,, 드디어 화면이 나왔다!!!! 배포 해냈다!
아래는 배포 테스트의 결말…!

평가
쉽지않았다. 제일 쉽지 않았던 것 같다. 하지만 포기할 수 없었다… 포기해서 찝찝하게 잠을 못자나 늦게까지 해서 잠을 못자나 똑같을 것 같아서 무조건 끝을 봤다.
그래도 이제 해결할 수 있다는 것을 알게 되었고, Github Actions 도 사용하는 방법을 알 수 있어서 뿌듯했다.
역시 힘든 삽질 후에 먹는 밥이 꿀맛
참고 블로그 - React GitHub Page에 배포하기
참고 블로그 - GitHub Pages 배포하기 with React
참고 블로그 - React Github page 배포 내가 해냄