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

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를 설치하려면이 문제를 어떻게 해결합니까?



답변

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


답변

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

그런 다음 실행

rm -rf node_modules/
npm cache clean
npm install

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


답변

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

npm install -g npm


답변

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

npm install -g npm-install-peers


답변

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

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


답변

이 답변이 모든 경우에 적용되는 것은 아니지만 간단히을 입력하여 오류를 해결할 수없는 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를 아직 테스트하지 않았지만 아무런 문제가없는 경우 오류를 남기는 것을 고려할 수 있습니다.

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

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


답변

주어진 대답은 항상 작동하지 않습니다. 문제가 해결되지 않으면 에 올바른 기호를 사용하고 있는지 확인하십시오 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"패키지 번호를 찾을 수 없습니다 . 정말로 안전하려면 ~또는 ^의미를 읽고 싶지 않으면를 제거하십시오 .