본문 바로가기
개발/React

리액트 - Netlify 배포 에러 해결하기 (Netlify Build and Deploy Error)

by 피로물든딸기 2024. 4. 25.
반응형

리액트 전체 링크
 
Netlify로 리액트 프로젝트 배포하기
Netlify로 배포된 프로젝트에 리액트 라우터 적용하기
Netlify 배포 에러 해결하기
 
깃허브 페이지에 배포했던 프로젝트를 Netlify에 배포하면서 발생했던 에러를 정리하였다.
 
다음과 같은 경우가 발생하였다.
 
- npm install 에 옵션이 필요한 경우 (--legacy-peer-deps)
- CI 설정 (CI= npm run build)
- package.json : homepage 설정


npm install 에 옵션이 필요한 경우 (--legacy-peer-deps)
 
페이지를 배포했을 때 아래 에러가 나온다면 npm install이 잘 설치가 되지 않는 경우다. (Initializaing Failed)
Failed during stage 'Install dependencies': dependency_installation script returned non-zero exit code: 1

 
예시 로그는 다음과 같다.

11:40:09 PM: Failed during stage 'Install dependencies': dependency_installation script returned non-zero exit code: 1
11:40:09 PM: npm ERR! code ERESOLVE
11:40:09 PM: npm ERR! ERESOLVE could not resolve
11:40:09 PM: npm ERR!
11:40:09 PM: npm ERR! While resolving: @material-ui/core@4.12.4
11:40:09 PM: npm ERR! Found: react@18.2.0
11:40:09 PM: npm ERR! node_modules/react
11:40:09 PM: npm ERR!   react@"^18.2.0" from the root project
11:40:09 PM: npm ERR!   peer react@"^16.12.0 || ^17.0.0 || ^18.2.0" from @chatscope/chat-ui-kit-react@1.10.1
11:40:09 PM: npm ERR!   node_modules/@chatscope/chat-ui-kit-react
11:40:09 PM: npm ERR!     @chatscope/chat-ui-kit-react@"^1.10.1" from the root project
11:40:09 PM: npm ERR!   37 more (@ckeditor/ckeditor5-react, @emotion/react, ...)
11:40:09 PM: npm ERR!
...
11:40:09 PM: Error during npm install
11:40:09 PM: Failing build: Failed to install dependencies

 
Why did it fail? 버튼을 클릭하면 이유와 해결 방법을 제시해 준다.
해당 프로젝트는 material-ui 등 특정 라이브러리가 패키지 버전 충돌에 의해 나타난 문제다.
실제 프로젝트에 라이브러리를 설치하는 경우에도 --legacy-peer-deps 옵션을 주고 있다.

 
해당 옵션을 주기 위해서는 configuration에 환경 변수를 설정해야 한다.
왼쪽의 Site overview → Site configuration으로 이동하자.

 
Environment variables → Environment variables → Add a variable Add a single variable을 클릭한다.

 
KeyNPM_FLAGS, Same value for all deploy contexts에는 --legacy-peer-deps를 추가한다.

 
정상적으로 추가되면 아래의 화면이 보이게 된다.

 
이제 Deploys에서 Fail 된 로그를 클릭아래 페이지로 이동하자.
Retry 버튼을 눌러서 다시 배포할 수 있다.

 
이제 Initializing이 통과되는 것을 알 수 있다.


CI 설정 (CI= npm run build)
 
이제 Building에서 아래 에러가 발생하는 경우, 문제를 해결해 보자.
Failed during stage 'building site': Build script returned non-zero exit code: 2
 
예시 로그는 다음과 같다.

11:44:40 PM: Failed during stage 'building site': Build script returned non-zero exit code: 2 

...

11:44:41 PM: "build.command" failed                                        
11:44:41 PM: ────────────────────────────────────────────────────────────────
11:44:41 PM: ​
11:44:41 PM:   Error message
11:44:41 PM:   Command failed with exit code 1: npm run build (https://ntl.fyi/exit-code-1)
11:44:41 PM: ​
11:44:41 PM:   Error location
11:44:41 PM:   In Build command from Netlify app:
11:44:41 PM:   npm run build
11:44:41 PM: ​
11:44:41 PM:   Resolved config

 
먼저 환경 변수 NPM_FLAGS를 추가한 것처럼 CI = false를 등록한다.

 
그리고 Build & deploy → Continuous deployment에서 Build command를 확인해 보자. (npm run build)

 
Configure 버튼을 눌러 Build command"CI= npm run build"로 수정한다.
CI= 뒤에 띄어쓰기가 포함되어야 한다.

 
위와 같이 설정하더라도 빌드에 실패한다면 아래와 같이 수정해 보자.
NODE_OPTIONS='--openssl-legacy-provider' CI= react-scripts build

 
정상적으로 빌드가 되는 것을 알 수 있다.


package.json : homepage 설정
 
만약 이전에 깃허브 페이지 때문에 설정했던 homepagepackage.json에 남아있다면
homepage를 삭제하거나 netlify의 페이지로 수정하면 된다.

// "homepage": "https://bloodstrawberry.github.io/react-project"
"homepage": "https://react-project-bloodstrawberry.netlify.app/"
반응형

댓글