-
Notifications
You must be signed in to change notification settings - Fork 8
[TS] webpack에서 react‐router‐dom 적용 안됨
MYONG JAEWI edited this page Aug 9, 2024
·
1 revision
- 라우터 설정을 했음에도 불구하고, 해당 url 로 이동시 페이지 컴포넌트가 렌더링 되지 않음
react-router
import { Outlet, createBrowserRouter } from 'react-router-dom';
import Template from '@/pages/Template';
import TemplateList from '@/pages/TemplateList';
const Layout = () => {
return <Outlet />;
};
const router = createBrowserRouter([
{
element: <Layout />,
children: [
{
path: '/',
element: <TemplateList />,
},
{
path: 'template',
element: <Template />,
},
],
},
]);
export default router;
검색 키워드 : react router, webpack 404
이 문제는 웹 서버가 SPA(Single Page Application) 라우팅을 올바르게 처리하지 못할 때 발생합니다. 이 문제는 서버가 /template 경로에 대한 요청을 받았을 때, 해당 경로에 대한 정적 파일을 찾지 못하고 404 오류를 반환하기 때문입니다. React와 같은 SPA에서는 클라이언트 측에서 라우팅을 처리하므로, 서버는 모든 라우트 요청을 index.html로 리다이렉트해야 합니다.
이런 오류를 connect-history-api-fallback 현상이라고 한다.
1. 개발 서버 설정: 개발 중이라면, webpack-dev-server의 설정을 확인하고, 모든 요청을 index.html로 리다이렉트하도록 설정해야 합니다. webpack.config.js 파일에서 다음과 같이 설정할 수 있습니다:
module.exports = {
// ... 기존 설정 ...
devServer: {
historyApiFallback: true, // 모든 404 응답을 index.html로 리다이렉트
// ... 기타 devServer 설정 ...
},
// ... 기타 설정 ...
};
historyApoFallback는 HTML5의 history API를 사용할 경우 설정해놓은 url 이외의 url 경로로 접근할 때
404 responses를 받게 되는데 이때도 index.html을 서빙할 지 경정하는 옵션이다.
즉, React에서 react-router-dom이 내부적으로 HTML5 Histroy API를 사용하기 때문에 새로고침을 했을 때도
index.html을 넘겨 원하던 페이지를 보여주게된다.
webpack.config.js에 해당 옵션을 추가해주면 된다.
module.exports = {
...
devServer: {
historyApiFallback: true,
},
...
}
- 백엔드 코드 컨벤션
- 백엔드 기술 스택 및 선정 이유
- 각종 인스턴스 설정 파일 및 구성 위치 가이드
- ERD (24.09.27)
- 백엔드 CI CD 동작 프로세스
- 로컬 DB 환경 설정
- 백엔드 로깅 전략
- 백엔드 로그 모니터링 구성도
- 스프링 메트릭 모니터링 구성도
- Flyway 로 스키마 관리
- 코드잽 서버 구성도
- Git Submodule 사용 메뉴얼
- 프론트엔드 코드 컨벤션
- 프론트엔드 기술 스택 및 선정 이유
- 프론트엔드 서비스 타겟 환경 및 브라우저 지원 범위 선정
- 프론트엔드 모니터링 및 디버깅 환경 구축
- 프론트엔드 테스트 목록
- 프론트엔드 라이브러리 기술 검토
- 프론트엔드 개발서버, 운영서버 빌드 및 배포 환경 구분
- 목표했던 타겟 환경과 디바이스에서 서비스 핵심 기능 동작 확인
- 프론트엔드 접근성 개선 보고서
- EC2 로그 확인 방법
- VSCode를 통한 EC2 인스턴스 SSH 연결 방법
- 터미널을 통한 EC2 인스턴스 SSH 연결 방법
- NGINX 설정 파일 접근 및 적용 방법
- DB 접속 및 백업 방법
- [QA] 배포 전 체크리스트
- CI 파이프라인 구축
- CD 파이프라인 구축
- 백엔드 CI CD 트러블슈팅
- Lombok Annotation Processor 의존성을 추가한 이유
- 2차 스프린트 기준 ERD
- DTO 검증하기
- ProblemDetail
- Fork된 레포지토리 PR에서 CI Secrets 접근 문제 해결
- AWS CloudWatch 모니터링
- 스프링 메트릭 모니터링 구축 방법
- 로깅과 Logback에 대해 알아보아요.
- 백엔드 CD 파이프라인 Ver.2
- 요청, 응답 로그에 correlationId 를 추가하자!
- 3차 스프린트 기준 ERD
- 더미데이터 생성하고 실행하기
- 쿼리 성능 개선 결과
- 테이블별 인덱스 설정 목록
- 사용자 증가 시 발생할 수 있는 문제 상황과 개선 방안
- k6를 사용한 서버 부하 테스트
- 6차 스프린트 기준 ERD
- Query Performance Improvement Results
- 테스트 전략 및 CI 설정
- CI CD 구조
- 배포 전, 로컬에서 로그인 기능 포함 테스트해보는 법
- stylelint 적용기
- 내 작업 브랜치 중간에 Merge된 동료의 작업물을 넣고 싶다면 pull vs rebase
- [TS] Webpack config
- [TS] Webpack 환경에서 MSW v2 이슈
- [TS] webpack에서 react‐router‐dom 적용 안됨
- 2024.07.28 새 기획 회의
- 2024.07.26 2차 데모데이 후 회의
- 2024.07.11 백엔드 논의 좀 할게요
- 2024.07.11 백엔드 ERD 회의
- 2024.07.09 깃 브랜치 전략, PR 템플릿 회의
- 2024.07.03 주제 선정 회의
- 2023.07.03 팀빌딩데이 킥오프 회의
- 2023.08.07 3차 스프린트 중간회고