[DOCKER] react-docker시 unable to resolve dependency tree 문제 해결
삽질정리
# 1. node 이미지 사용
FROM node:16-alpine
# 2. 패키지 우선 복사
COPY ./troller/package* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
# 3. 소스 복사
COPY ./troller /usr/src/app
# 4. WEB 서버 실행 (Listen 포트 정의)
EXPOSE 3000
CMD npm start
지금까지 사용해오던 react와 관련된 dockerfile이다
그중 RUN npm install에서 자꾸 에러가 떴다.
jenkins에서 빌드해보니
[0m[91mnpm[0m[91m [0m[91mERR![0m[91m Could not resolve dependency:
[0m[91mnpm[0m[91m [0m[91mERR![0m[91m peer react@">= 16.14.0 < 18.0.0" from @nivo/core@0.79.0
[0m[91mnpm[0m[91m [0m[91mERR![0m[91m node_modules/@nivo/core
[0m[91mnpm[0m[91m ERR![0m[91m @nivo/core@"^0.79.0" from the root project
[0m[91mnpm ERR! peer @nivo/core@"0.79.0" from @nivo/tooltip@0.79.0
npm ERR! node_modules/@nivo/tooltip
npm[0m[91m [0m[91mERR![0m[91m peer @nivo/tooltip@"0.79.0" from @nivo/core@0.79.0
[0m[91mnpm[0m[91m [0m[91mERR![0m[91m
[0m[91mnpm[0m[91m [0m[91mERR![0m[91m Fix the upstream dependency conflict, or retry
[0m[91mnpm[0m[91m ERR![0m[91m this command with --force, or --legacy-peer-deps
[0m[91mnpm [0m[91mERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
이런식으로 나옴
대충 이해를 해보자하니
현재 설치된 react버전은 18.0.0인데 dependecy 중에 16.14.0에 의존되어 있어 의존성을 해결하지 못한다 이런의미인거같다
삽질해결
https://www.korecmblog.com/ERESOLVE-unable-to-resolve-dependency-tree/
ERESOLVE unable to resolve dependency tree 해결하기
상황 블로그를 만들기 위해 Gatsby Starter 메뉴얼에 따라서 아래 명령어를 실행했다. 공식 문서에서 제공하는 설치 방법임에도 불구하고 아래와 같은 오류가 발생했다. 자세히 오류를 살펴보면 아
www.korecmblog.com
이거보고 해결함 감사합니다...
위 블로그를 보니 나와같이 react 현재 버전이 dependency에서 의존되는 react 버전이라 그런것 같다.
npm install 할 때 --force 또는 --legacy-peer-deps와 함께 실행하라는 것이다. 즉, npm install --legacy-peer-deps 를 실행하면 위 의존성 문제를 해결할 수 있다.
npm 3~6버전까지는 경고만 뜨고 실제로 빌드가 안되진 않았다.하지만 npm7버전 부터 npm install하면 다음과 같은 에러가 뜨도록 바꼈다고 한다.
실은 react 잘몰라서 무슨소린지 잘 모르겠음
즉 나는
npm install -> npm install --legacy-peer-deps로 해결!
총정리
- npm install --force
로컬에 다운로드 복제본이 존재하더라도 다시 온라인에서 다운로드 받는다.
- npm install --legacy-peer-deps
마치 6버전 이하에서 동작하던 것처럼 peerDependencies를 무시한다.
- npm config set legacy-peer-deps true
모든 npm install에서 legacy-peer-deps로 동작하도록 설정한다. npm에서 권장하지 않는 방법이다.
- yarn install