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.