npm UNMET PEER DEPENDENCY 경고를 어떻게 수정합니까?


223

Node 5.6.0 및 npm 3.6.0과 함께 Windows 10을 사용하고 있습니다. angular-material과 mdi를 작업 폴더에 설치하려고합니다. npm 은 다음과 같이 각도 재료 mdi 오류를 설치 합니다.

+-- angular@1.5.0

+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0

+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0

+-- angular-material@1.0.6

+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57

npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json' 

npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.

AngularJS Material 및 MDI를 설치하려면이 문제를 어떻게 해결합니까?


이러한 유형의 오류로 인해 문제가 발생합니까?
— blackHawk

Reza를 위해서가 아니라, 늦었지만, 다른 사람들을 위해 ... 이것을 시도하십시오 : npm view 앵귤러 물질 peerDependencies
— peter70

1
일반적으로 충족되지 않은 종속성을 항상 해결하려는 것은 아닙니다. 예를 들어, 일부 패키지는 other-package@^1.5.0에 종속되며 other-package@2.0.0이 설치되어 있으면 버전을 롤백 할 필요가 없습니다. 실제로 최신 버전에 문제가 있는지 테스트하는 것이 좋습니다.
— John Pankowicz

답변:


203

npm은 더 이상 피어 종속성을 설치하지 않으므로 수동으로 설치하고 npm install필요한 dep을 수행 한 다음 기본을 다시 설치하십시오.


댓글에 답장 :

그것은 그 메시지에서 옳습니다.

UNMET PEER DEPENDENCY angular-animate@^1.5.0 +-- 
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57` 

그래서 당신은 npm install angular angular-animate angular-aria angular-material angular-messages mdi


앵귤러 소재의 뎁스를 찾아 설치할 수있는 방법이 있습니까?
— Reza

2
이러한 새로운 종속성을 추가해야 package.json합니까?
— 0xcaff

2
@caffinatedmonkey 이상적
— Datsik

9
--save스위치 를 지정하면 @caffinatedmonkey npm이 package.json을 업데이트합니다 (또는 --save-dev패키지가 개발 의존성 인 경우)
— McGuireV10

33
npm의 요점이 아닌 모든 종속성을 관리하도록 하시겠습니까? npm 설치를 수행하면 composer.json 파일에 수동으로 수동으로 추가 해야하는 충족되지 않은 종속성 목록이 있습니다.이 시점에서 npm에서 얻는 가치는 무엇입니까?
— chiliNUT

66

UNMET PEER DEPENDENCYpackage.json파일에 지정된 하나 이상의 모듈의 종속성이 충족되지 않으면 오류가 발생합니다 . 경고를주의 깊게 확인하고 package.json올바른 버전의 종속성으로 파일을 업데이트하십시오 .

그런 다음 실행

rm -rf node_modules/
npm cache clean
npm install

필요한 모든 종속성이 올바르게 설치됩니다.


3
동료 의존성이란 무엇입니까
— aWebDeveloper

패키지를 설치할 때 다른 패키지의 특정 버전에 따라 달라질 수 있습니다. 올바른 종속 버전의 패키지를 제공하지 않으면 "피어 종속성"이 충족되지 않습니다. 따라서이를 해결하려면 종속 패키지의 예상 버전을 업데이트해야합니다.
— JayKrish 2016 년

4
그것은 나를 위해 작동하지 않았다. 피어가 필요하다는 경고가 계속 표시됩니다.
— Adam Zerner

1
허용되는 솔루션보다 훨씬 깨끗합니다! 이 코드 세트는 특정 문제 대신 운영 문제의 모든 가능한 경우를 처리합니다.
— HoldOffHunger

npm cache clean 명령을 사용하면 오류가 발생합니다. npm @ 5부터 npm 캐시는 손상 문제로부터 자체 복구되며 캐시에서 추출 된 데이터는 유효합니다. 모든 것이 일관되게하려면 대신 'npm cache verify'를 사용하십시오. npm ERR! 전체 캐시를 삭제하려면 --force를 사용하여이 명령을 다시 실행하십시오.
— CodeMonkey

30

필자의 경우 모든 종속성이 이미 존재했습니다. 이 경우 NPM 이 충돌했을 수 있으므로 업데이트하십시오 . 내 문제를 해결했습니다.

npm install -g npm

나를 위해 일했다. UNMET PEER DEPENDENCY typescript설치하려고 할 때 오류가 발생했습니다 tslint. 일단 npm을 업데이트 한 후에는 typscript를 먼저 설치 한 다음 tslint를 설치해야했습니다.
— Ravimallya

어떤 이유로 든 모든 종속 항목이 업데이트 될 때까지 두 번 이상 실행해야했습니다.
— 코더

이로 인해 npm이 끊어지고 많은 오류가 발생했습니다.
— 잭

14

npm-install-peers 가 나를 위해 일했습니다.

npm install -g npm-install-peers

1
나를 위해 작동하지 않았다 : "이 패키지에는 peerDependencies가없는 것 같습니다." 그러나 "npm ERR! peer dep missing : @ angular / common @ ^ 5.0.0 || ^ 6.0.0, @ agm / core @ 1.0.0-beta.3에 필요함"과 같은 몇 가지 메시지가 있습니다.
— Almir Campos

2
이 패키지는 현재 패키지의 직접 피어 dep 만 설치하고 패키지 deps의 피어 dep (하위 피어)를 처리하지 않습니다.
— Alex Skrypnyk 2016 년

7

이 오류의 가장 가능한 원인 중 하나는 package.json에서 이전 버전을 정의했기 때문일 수 있습니다. 이 문제를 해결하려면 npm이 불평하는 n.와 일치하도록 package.json의 버전을 변경하십시오.

완료되면 npm install 및 voila !!를 실행하십시오.


6

이 답변이 모든 경우에 적용되는 것은 아니지만 간단히을 입력하여 오류를 해결할 수없는 npm install 경우이 단계가 도움이 될 수 있습니다.

이 오류가 발생했다고 가정 해 봅시다.

UNMET PEER DEPENDENCY packageA@4.2.0

npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.

즉, packageA 버전 4.2.0을 설치했지만 packageB@3.3.0에는 pakageA 버전 3.xx가 필요합니다. ( ^의 설명 )

따라서 packageA를 3.xx로 다운 그레이드하여이 오류를 해결할 수 있지만 일반적으로 패키지를 다운 그레이드하고 싶지는 않습니다.
희소식은 packageB가 packageA를 유지하지 않고 packageB의 관리자가 packageA의 피어 종속성을 4.xx로 높이려고 시도
하는 경우입니다.이 경우 packageB의 상위 버전이 있는지 확인할 수 있습니다. npm 또는 github에 packageA 버전 4.2.0이 필요합니다.

예를 들어 출시 페이지로 이동여기에 이미지 설명을 입력하십시오

종종 이와 같은 종속성에 대한 주요 변경 사항을 찾을 수 있습니다.

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

출시 페이지에서 아무것도 찾지 못하면 이슈 페이지로 이동하여 키워드로 이슈를 검색하십시오 peer. 유용한 정보를 찾을 수 있습니다.

여기에 이미지 설명을 입력하십시오

이 시점에서 두 가지 옵션이 있습니다.

1) 원하는 버전으로 업그레이드하십시오.
2) 당분간 오류를 남기고 안정적인 버전이 출시 될 때까지 기다리십시오.

옵션 1을 선택한 경우 :
대부분의 경우 버전에 latest 태그 가 없으므로 안정적이지 않습니다. 따라서이 업데이트에서 변경된 사항을 확인하고 문제가 없는지 확인해야합니다.

옵션 2를 선택하는 경우 :
pakageA를 버전 3에서 4로 업그레이드하는 것이 사소하거나 pakageB의 관리자가 pakageA의 버전 4를 아직 테스트하지 않았지만 아무런 문제가없는 경우 오류를 남기는 것을 고려할 수 있습니다.

두 경우 모두 아무 것도 깨지지 않으면 철저히 테스트하는 것이 가장 좋습니다.

마지막으로 왜 그런 일을 수동으로 수행해야하는지 알고 싶다면 이 링크에서 설명합니다.


4

주어진 대답은 항상 작동하지 않습니다. 문제가 해결되지 않으면 에 올바른 기호를 사용하고 있는지 확인하십시오 package.json. 이것은 두통을 해결하는 데 매우 중요합니다. 예를 들면 다음과 같습니다.

warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

그래서 내 타이프 스크립트는 2.4.2와 2.6 사이에 있어야합니까?

그래서 내가 사용하는 내 타이프 스크립트 라이브러리를 변경 "typescript": "^2.7"사용하는 "typescript": "^2.5". 맞습니까?

잘못된.

^당신이 NPM 사용에 괜찮 수단 "typescript": "2.5"이나 "2.6"또는 "2.7"등 ...

당신은 배우고 싶다면 무엇 ^과 ~그것을 평균 참조 : package.json에 물결표 (~)와 캐럿의 차이 (^)이 무엇입니까?

또한 패키지가 존재하는지 확인해야합니다. "typescript": "2.5.9"패키지 번호를 찾을 수 없습니다 . 정말로 안전하려면 ~또는 ^의미를 읽고 싶지 않으면를 제거하십시오 .


이 설명에 감사드립니다. 나는 두 개의 라이브러리를 사용하는 경우 첫 번째 (예를 들어, 경우 어떤 일이 발생 library-one)가 사용하는의 피어를 예 package@<2.6와 다른 ( library-two의) 피어 package@>2.7? 그런 다음 package코드베이스에서 두 가지 버전을 처리해야 합니까? 어떻게 내가 사용할 때 알게 될 것이다 library-one내가 가지고 그것을 사용하는 package@2.5.9내가 사용하는 경우 그 사이에 library-two나는 그것을 사용할 필요가 package@2.7.1?
— 토닉 스

3

좋아, 나는 이것을 알아 내려고 오랫동안 고투했다. 다른 모든 방법을 다 써 버린 핵 옵션 은 다음과 같습니다 .

  • PC에 새 폴더를 만듭니다.
  • angular의 새로운 설치를 다운로드하십시오-나는이 안내서를 사용했습니다 : https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
  • 그것을 실행하고 작동하는지 확인하십시오
  • 그런 다음 package.json 파일에서 종속성을 하나씩 설치하십시오.
  • 각각 설치 한 후 실행

작업을 마치고 여전히 작동하면 실제 코드를이 새 프로젝트로 가져옵니다. 최신 버전의 각 원인의 컴파일 오류를 수정하십시오.

그게 나를 위해 무엇을 .. 1 시간의 재 작업 대 6 시간의 wtf를 알아 내려고 노력하는 것이 잘못되었습니다.


OP는 AngularJS
— Edric을

2

오늘 Angular 2 rc.7을 사용할 수 있으며 rxjs@5.0.0-beta.12UNMET PEER DEPENDENCY 와 비슷한 문제가 있습니다.

당신이 경우에, 저처럼 간단하게 교체 @angular/...rc.6에 @angular/...rc.7- 그것은 충분하지 않습니다. 예를 들어 버전 @angular/router이 없기 때문 rc.6입니다.

이 경우 빠른 시작 에서 package.json 을 더 잘 검토하십시오.


OP는 AngularJS
— Edric을

-6

UNMET 종속성을 전체적으로 설치하여 해결할 수 있습니다.

예 : npm install -g @ angular / common @ 4.4.6

하나씩 설치하십시오. 그것은 나를 위해 일했습니다.


이것이 정말로 최선의 해결책일까요? 프로젝트 종속성에 대한 실제 "문제"를 무시하기 위해 전역으로 설치합니까?
— qx3

1
그러면 시스템에 전체적으로 종속성이 설치됩니다. 동료들은 공유 환경에서이를 설명 할 수 없습니다.
— AC Patrice
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.