Github Pages로 배포한 사이트가 제대로 나오지 않는다.

이재찬·2022년 8월 23일
0

Github-Pages

목록 보기
2/2
post-thumbnail

Github Pages

에 배포까지는 성공적으로 되었는데, 막상 내용물이 아무것도 나오질 않았다.

gh-pages

브랜치를 확인해도 정적 파일들(assets)를 포함하여 모든 파일들이 제대로 push 되어 있었다.
이 문제를 해결하는데 진짜 많은 시간이 걸렸다. 결론적으로 무척이나 간단한 것이었지만, 알아채는데 너무 오랜 시간이 걸렸다.
특히 vite에서 제공하는

preview

기능을 이용하여 로컬에서 production build 된 폴더를 실행했을 때는 잘나와서 더 혼란스러웠던 것 같다.

원인

원인은 라우터 문제였다.
히스토리 설정을

HTML5 Mode(vue: HistoryMode, React: Browser Router)

로 라우터 설정을 하였는데,
  • Local
    • localhost, 혹은 설정한 네트워크 host로 접근.
    • 나의 경우

      http://localhost:port

  • Github Pages
    • host:

      https://[github-id].github.io

    • path:

      /[repository-name]

Github Pages로 생성된 주소의 경우,

/[repository-name]

을 path로 받고 있는데, 이에 관한 설정을 해주지 않아 해당 라우터로 접근 시 컴포넌트를 제대로 불러오지 못하는 것이었다.

라우터 설정을 기준으로 정적 파일(static files)을 만들기 때문에 Github pages에서 이는 딱히 문제가 없었고, 그 결과 404 에러는 띄우지 않았지만 정작 js 파일에서 컴포넌트를 찾을 때, 경로상 매칭이 되지 않아 문제가 발생하였다.

해결

저의 경우

vite-plugin-pages

로 라우터를 설정하기 때문에 이를 기준으로 설명합니다.
# vite.config.js

import { defineConfig } from "vite";

export default defineConfig({
	...,
    base: "/[repository-name]/",
    Pages({
      pagesDir: [
        {
          dir: "src/pages",
          baseRoute: "/[repository-name]",
        },
      ],
    }),
    ...,
})
이처럼

repository-name

을 기준으로 route를 다시 잡아주면, 로컬과 빌드 모두 정상적으로 동작하는 걸 확인할 수 있다.

혹은 Github Pages에서 제공하는 Custom Domain을 이용하면 번거로운 설정 없이 사용할 수 있을 것 같다.
profile
Jr.Frontend Developer / Vue.js Developer

0개의 댓글