본문 바로가기
Ect./Library

에러 Fix the upstream dependency conflict, or retrynpm, this command with --force or --legacy-peer-deps

by 쿠리의일상 2023. 7. 19.

요즘 프로젝트 세팅하며, 프로젝트에 사용될 라이브러리를 설치하고 지웠다를 반복하고 있다.

그중에서도 뭐만하면 자꾸 참조가 꼬이는데...

 

도대체 왜 뜨는걸까?

npm 7 버전부터 생긴 이슈라는데, 

https://github.blog/2021-02-02-npm-7-is-now-generally-available/

그 이전 버전에서는 종속성끼리 서로 버전이 호환되지 않는다는 경고만 표시하고 오류 없이 설치했다고 한다.

npm 7 이후로 자동으로 해결할 수 없는 종속성 충돌이 있는 경우 설치를 차단해준다고 한다.

 

물론 해결 방법은 쉽다. 위에 보이는 내용처럼 npm install 과 --force 또는 --legacy-peer-deps 를 같이 써주면 된다.

 

둘의 차이점은?

--force 는 충돌의 우회하는 명령 -> 필요한 경우 패키지 의존성을 위해 추가적인 패키지를 자동으로 추가

--legacy-peer-deps 는 무시하고 그냥 설치하는 명령

npm 7 버전 이전에는 default  가 --legacy-peer-deps 였던 것이다.

 

많은 패키지들의 종속성간 충돌이 느슨해져 해결이 가능하지만, 혹시라도 엄격하게 종속성을 주려면 -- strict-peer-deps 명령을 추가해준다.

 

두 명령어를 사용해도 설치가 안된다면

npm cache clear --force

캐시를 날려주면 된다. 이래도 안되면... 어쩌나