규턴의 개발블로그

 

삽질정리

 

# 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에서 빌드해보니

npm ERR! Could not resolve dependency:
npm ERR! peer react@">= 16.14.0 < 18.0.0" from @nivo/core@0.79.0
npm ERR! node_modules/@nivo/core
npm ERR!   @nivo/core@"^0.79.0" from the root project
npm ERR!   peer @nivo/core@"0.79.0" from @nivo/tooltip@0.79.0
npm ERR!   node_modules/@nivo/tooltip
npm ERR!     peer @nivo/tooltip@"0.79.0" from @nivo/core@0.79.0
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! 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로 해결!

 

총정리

 

  1. npm install --force

로컬에 다운로드 복제본이 존재하더라도 다시 온라인에서 다운로드 받는다.

  1. npm install --legacy-peer-deps

마치 6버전 이하에서 동작하던 것처럼 peerDependencies를 무시한다.

  1. npm config set legacy-peer-deps true

모든 npm install에서 legacy-peer-deps로 동작하도록 설정한다. npm에서 권장하지 않는 방법이다.

  1. yarn install
profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!