Front-end: Create React App
Back-end : Spring Boot
각각의 장점을 최대한 활용하기 위해 분리해서 작업하는 방법
React + SpringBoot (Gradle) 손쉽게 연동하기
연동을 위해 이 블로그 글대로 진행하였습니다.
1. SpringBoot 생성
- Spring io를 이용해 스프링 부트 생성
- Intellij에서 Project Type을 Gradle로 변경
2. ReactApp
- 1단계에서 만든 SpringProjectName/src/main/ 경로로 접근
- create-react-app [PROJECT NAME] 명령어 실행
- cd [PROJECT NAME] 실행
- npm start 실행
- 새 터미널 창 열고 작업하던 경로로 이동
- npm install 실행
- npm run-script build 실행
- npm run eject 실행
에러 발생 시 데이터를 전부 git push한 상태인지 확인 - [PROJECT NAME]/config/paths.js 파일에서 build에 /static 추가
- [PROJECT NAME]/build의 모든 파일 삭제
module.exports = { dotenv: resolveApp('.env'), appPath: resolveApp('.'), appBuild: resolveApp('build/static'), // 'build'를 'build/static'으로 변경 appPublic: resolveApp('public'), appHtml: resolveApp('public/index.html'), appIndexJs: resolveModule(resolveApp, 'src/index'), appPackageJson: resolveApp('package.json'), appSrc: resolveApp('src'), appTsConfig: resolveApp('tsconfig.json'), appJsConfig: resolveApp('jsconfig.json'), yarnLockFile: resolveApp('yarn.lock'), testsSetup: resolveModule(resolveApp, 'src/setupTests'), proxySetup: resolveApp('src/setupProxy.js'), appNodeModules: resolveApp('node_modules'), swSrc: resolveModule(resolveApp, 'src/service-worker'), publicUrlOrPath, };
3. SpringBoot
-
SpringBoot 프로젝트의 build.gradle로 이동해서 dependencies{ ... }와 test{ ... } 사이에 아래 소스 첨부
def webappDir = .../[PROJECTNAME] 변경def webappDir = "$projectDir/src/main/[PROJECTNAME]" sourceSets { main { resources { srcDirs = ["$webappDir/build", "$projectDir/src/main/resources"] } } } processResources { dependsOn "buildReact" } task buildReact(type: Exec) { dependsOn "installReact" workingDir "$webappDir" inputs.dir "$webappDir" group = BasePlugin.BUILD_GROUP if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) { commandLine "npm.cmd", "run-script", "build" } else { commandLine "npm", "run-script", "build" } } task installReact(type: Exec) { workingDir "$webappDir" inputs.dir "$webappDir" group = BasePlugin.BUILD_GROUP if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) { commandLine "npm.cmd", "audit", "fix" commandLine 'npm.cmd', 'install' } else { commandLine "npm", "audit", "fix" commandLine 'npm', 'install' } }
-
Intellij 오른쪽 상단 gradle 클릭
-
Tasks/build 안에 build 실행
-
빌드 완료 후 [SpringProjectName]/build/libs로 이동
-
폴더 안에 있는 jar 파일 실행(
java -jar FILENAME
) -
Localhost:8080 접속해서 React화면 출력되면 성공!
해당 과정을 실행하면서 겪었던 오류
-
insufficient permission for adding an object to repository database .git/objects
sudo chown -R "${USER:-$(id -un)}" .
-
git pull 후에 Intellij 오른쪽 상단에 gradle이 보이지 않는 경우
https://angel-jinsu.tistory.com/21 - localhost:8080에 접속했을 때 빈 화면이 뜨는 오류
[PROJECTNAME]/src/app.js, index.js 상단에 import 부분 확인하기import React from 'react';
import ReactDOM from 'react-dom';
[참고]
https://kim6394.tistory.com/226
https://joshua-dev-story.blogspot.com/2020/01/react-spring.html
https://hjjooace.tistory.com/entry/React-Spring-Gradle-Project-연동#none
수정해야할 부분이 있다면 댓글 부탁드립니다. 감사합니다
'Group Study (2020-2021) > ReactJS + Spring Boot ToyProject' 카테고리의 다른 글
[웹 3팀] 1. Create, Read, Update 기능 구현해보기 (1) | 2020.12.25 |
---|---|
[웹 2팀] 4. mysql - spring boot 연동 및 오류 모음 (0) | 2020.12.23 |
[웹 2팀] 3. axios와 CORS를 이용한 react-spring boot 연동 방법 (0) | 2020.12.18 |
[웹 2팀] 2. 웹 토이프로젝트에서 사용한 어노테이션 의미 알기 (0) | 2020.12.04 |
[웹 2팀] 1. 웹-토이프로젝트 시작하기(ReactJS + Spring Boot, 워크벤치 사용법) (0) | 2020.12.04 |