jar 배포 시 frontend 페이지에 접속이 안되는 이슈
./gradlew buildFatJar 로 빌드한 후에
jar를 실행해보니 frontend 페이지가 접속이 안되는 이슈가 있었습니다 (윈도우, 맥 환경 동일).
다른 분들은 정상적으로 실행되는데 제 환경이 잘못되어서 그런지도 모르겠습니다.
Routing.kt에 react 설정부분을 아래와 같이 변경하니 정상적으로 동작합니다. frontend 폴더는 ./resources 폴더로 이동시켰습니다.
어떤 문제때문에 발생한 이슈인지 강사님이나 고수님들이 조언 주시면 감사하겠습니다. 😄
[기존 코드]
singlePageApplication {
react("frontend")
}
[변경 코드]
staticResources("/", "frontend") {
default("index.html")
preCompressed(CompressedFileType.GZIP)
}
답변 2
1
안녕하세요. 정말 좋은 질문을 주셔서 저도 하나 배워갑니다!
API 서버로만 사용했다보니 개념적으로 놓친 부분이 생겼네요.😅
결론적으로
useResources 옵션을 주고 resources 하위에 frontend 폴더를 이동시켜야 jar 에 포함되는게 맞습니다.
jar 에 관련 파일이 포함되었는지는 아래 명령어로 확인하실 수 있어요.
$ jar tf build/libs/zcafe-all.jar | grep frontend
반대로 강의 처럼 resource 옵션을 주지 않으면 jar에 포함되지 않습니다.
🙋♂ 그럼 왜 강의에서 resources = false 인데 화면이 정상응답했는지? 는, jar 를 실행한 환경에서 ./frontend 경로에 index.html 파일이 있었기 때문이었어요. (프로젝트 root 경로에서 실행했었죠)
jar 를 다른 위치로 옮겨서 배포를 하고자 할 때, resource = false 로 하고자 하면 소스에 명시한 경로에 프론트 파일을 두어야 해요.
서버 소스 배포주기와 무관하게 화면 소스만 별도로 관리하고 싶을때 유용한 옵션이 되겠네요!

1
useResources = true 로 설정하니, jar 실행시 연결됩니다.
동일한 문제가 있으신 분들은 참고하세요. :)
singlePageApplication {
useResources = true
react("frontend")
}
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
47
1
강의가 검은 화면으로 나옵니다.
0
48
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
DI시 eager과 lazy
0
37
2
타입스크립트
0
46
1
actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.
0
46
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
주사위앱 소개 및 레이아웃 설정 문제
0
59
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
73
2
MCP 연동 인텔리제이 2.6.1
0
120
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
80
2
무중단 배포 / 컨테이너 이미지 관리에 주로 어떤 인프라를 활용하시나요?
0
66
1
34:22분 처럼 런타임 의존성 예외파악
0
62
1
Repository의 추상화
0
50
1
jar 파일 실행 오류
0
112
1
코틀린 코드 보기
0
137
1
checkout 해도 branch가 안 바뀌네요
1
160
1
자바 LocalDateTime 직렬화 관련 질문
1
292
3
어떻게 ktor 실행시 같은 포트로 리액트 서버가 뜰 수가 있나요?
1
284
2
패키지 폴더 domain이 없네요.
1
306
2
혹시 kotlinx-datetime 라이브러리를 사용하지 않으신 이유가 있으신가요?
1
602
2
첫번째 Ktor 서버 띄워보기 전에 강의 하나가 빠져있는것 같습니다.
1
298
2





