Troubleshooting

npm install 설치 npm ERR! code ERESOLVE 해결

KnovyLab 2026. 9. 29. 16:36

에러 스크리샷

npm install로 패키지를 설치하던 중 ERESOLVE 에러가 발생했다.

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree

처음에는 패키지 설치 자체의 문제인가 싶었는데, 확인해보니 설치하려는 패키지와 기존 프로젝트에서 사용 중인 패키지 사이의 peer dependency 버전 충돌 때문에 발생한 문제였다.

ERESOLVE가 발생하는 이유

npm은 패키지를 설치할 때 해당 패키지가 요구하는 의존성 버전을 함께 확인한다.

예를 들어 어떤 라이브러리가 다음과 같은 버전을 요구한다고 해보자.

react: ^17.0.0

그런데 현재 프로젝트에서는 다른 버전의 React를 사용하고 있다면 npm이 의존성 트리를 구성하는 과정에서 충돌을 발견할 수 있다.

이때 다음과 같이 ERESOLVE가 발생하면서 설치가 중단될 수 있다.

npm ERR! ERESOLVE unable to resolve dependency tree

특히 npm 7부터 peerDependencies를 기본적으로 설치하고 의존성 충돌도 이전보다 엄격하게 확인하면서 이런 에러를 접하는 경우가 많아졌다.

내가 해결한 방법

당시에는 react-native를 설치하는 과정에서 문제가 발생했고, --legacy-peer-deps 옵션을 추가해서 해결했다.

npm install react-native --legacy-peer-deps

축약해서 사용하면 다음과 같다.

npm i react-native --legacy-peer-deps

--legacy-peer-deps를 사용하면 npm이 패키지의 peerDependencies 충돌을 엄격하게 처리하지 않고, 이전 npm 버전처럼 이를 무시하고 의존성 트리를 구성한다.

내 경우에는 이 옵션을 추가한 뒤 정상적으로 패키지를 설치할 수 있었다.

--legacy-peer-deps를 항상 사용해도 될까?

설치가 된다고 해서 항상 가장 좋은 해결 방법인 것은 아니다.

--legacy-peer-deps는 충돌하고 있는 peer dependency 자체를 해결하는 것이 아니라 충돌 검사를 우회해서 설치를 진행하는 방법에 가깝다.

따라서 에러가 발생했다면 먼저 로그에서 어떤 패키지끼리 버전이 충돌하고 있는지 확인하는 게 좋다.

예를 들어 로그에 아래처럼 나온다면,

Found: package-a@2.x

Could not resolve dependency:
peer package-a@^1.x from package-b

package-b가 요구하는 package-a의 버전과 현재 프로젝트에서 사용 중인 버전이 맞지 않는 상황이다.

이런 경우에는 가능하면

  • 관련 패키지 버전을 맞출 수 있는지
  • 설치하려는 패키지의 최신 버전에서는 문제가 해결됐는지
  • 기존 패키지를 업데이트하거나 다운그레이드해야 하는지

먼저 확인해보는 편이 좋다.

당장 기존 프로젝트를 실행해야 하거나, 의존성 구성을 바로 변경하기 어려운 경우에는 --legacy-peer-deps를 임시 해결 방법으로 사용할 수 있다.

--force와 차이

ERESOLVE 에러를 검색하면 다음 명령어도 자주 나온다.

npm install --force

--force 역시 설치를 강제로 진행할 수 있지만, npm의 여러 보호 기능을 비활성화할 수 있기 때문에 무조건 사용하는 것은 권장하지 않는다.

단순히 peer dependency 충돌 때문에 설치가 막힌 상황이라면 개인적으로는 원인을 먼저 확인한 뒤 필요한 경우 --legacy-peer-deps를 사용하는 편이 낫다.

--save는 필요한가?

예전에 작성했던 코드에서는 다음처럼 사용했다.

npm i react-native --save --legacy-peer-deps

현재 npm에서는 일반적인 패키지 설치 시 기본적으로 package.json의 dependencies에 저장되기 때문에 보통 --save를 따로 붙이지 않아도 된다.

따라서 지금 다시 사용한다면 아래처럼 작성하면 된다.

npm i react-native --legacy-peer-deps

정리

npm ERR! code ERESOLVE는 대부분 패키지끼리 요구하는 의존성 버전이 맞지 않아 npm이 dependency tree를 만들지 못할 때 발생한다.

내 경우에는 다음 명령어로 해결했다.

npm i react-native --legacy-peer-deps

다만 --legacy-peer-deps는 의존성 충돌 자체를 해결하는 옵션은 아니다.

오래 유지해야 하는 프로젝트라면 에러 로그에서 충돌하는 패키지를 확인하고 버전을 맞추는 것이 가장 좋고, 당장 설치를 진행해야 할 때는 --legacy-peer-deps를 하나의 우회 방법으로 사용할 수 있다.

참고

 

 

최초 작성: 2021년 12월 3일