npm 피어 종속성을 자동으로 설치하는 방법은 무엇입니까?


274

예를 들어 Angular2를 설치할 때 :

npm install --save angular2
temp@1.0.0 /Users/doug/Projects/dougludlow/temp
├── angular2@2.0.0-beta.3 
├── UNMET PEER DEPENDENCY es6-promise@^3.0.2
├── UNMET PEER DEPENDENCY es6-shim@^0.33.3
├── UNMET PEER DEPENDENCY reflect-metadata@0.1.2
├── UNMET PEER DEPENDENCY rxjs@5.0.0-beta.0
└── UNMET PEER DEPENDENCY zone.js@0.5.11

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-promise@^3.0.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of rxjs@5.0.0-beta.0 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of zone.js@0.5.11 but none was installed.

피어 종속성을 설치하는 npm에 전달할 수있는 마술 플래그가 있습니까? 찾을 수 없었습니다 ... 피어 종속성을 수동으로 복사하여 붙여넣고 올바른 버전이 있는지 확인하는 것이 지루합니다.

다시 말해서, 나는 오히려 할 필요가 없습니다.

npm install --save angular2@2.0.0-beta.3 es6-promise@^3.0.2 es6-shim@^0.33.3 reflect-metadata@0.1.2 rxjs@5.0.0-beta.0 zone.js@0.5.11

더 좋은 방법은 무엇입니까?


이미 그 문제를 해결 했습니까? angular2 설치와 동일한 문제가 있습니다. -g 플래그를 사용하여 es6-promise를 수동으로 설치하고 npm install -g angular2를 다시 시도한 후에도 5 개의 충족되지 않은 피어 종속성 es6-promise, es6-shim, reflect-metadata, rxjs 및 zone.js와 동일한 오류 / 경고가 표시됩니다.
— nttakr

4
@nttakr-예, 피어 종속성으로 원하는 정확한 버전을 설치하면 경고가 제거됩니다. -g 플래그를 사용하여 전체적으로 설치하지 않으려 고합니다. 로컬로 (-S 플래그)를 설치하고 싶지만, 앞에서 말했듯이 정확한 버전이어야합니다 (예 : angular2@2.0.0-beta.3requires es6-promise@^3.0.2). 그러나 피어 종속성을 자동으로 설치하는 명령 / 플래그가 있는지 알고 싶습니다.
— Douglas Ludlow

@DouglasLudlow 어떤 NPM 버전을 사용하고 있습니까?
— peteb

@peteb : npm -v=>3.5.3
— Douglas Ludlow

나는 같은 문제가 있고, 솔루션 수율을 찾지
— 못했습니다

답변:


178

피어 종속성의 자동 설치는 해결하려고 시도한 것보다 많은 문제를 야기하므로 npm 3에서 명시 적으로 제거되었습니다. 예를 들어 여기에서 읽을 수 있습니다.

따라서, 주어진 이유로 인해 npm 3을 위로 사용하면 자동으로 설치할 수 없습니다.


4
그래, 나는 이것을 보았다 : github.com/npm/npm/issues/6565 ... 나는 당신이 여전히 플래그 또는 무언가로 그것들을 선택적으로 설치할 수 있기를 바랐다. 문제 나 무언가를 열어야 할 것 같아요.
— Douglas Ludlow

157
이런 종류의 문제를 어떻게 처리합니까? 저는 npm 전문가가 아니므로 "x는 y의 피어가 필요하지만 아무것도 발견되지 않았습니다"를 읽을 때 "어떤 동료?" "어떻게 모든 것을 다시 작동시킬 수 있습니까?" 프로세스가 있습니까? 무엇이 빠졌는지 알 때까지 x와 y의 코드를 파고 있습니까? 무엇이 빠졌는지 알게되면 다음에 무엇을합니까? 감사!
— Dan Cancro

81
아, 그것은 영어 문제입니다. "x에는 피어가 필요하지만 설치되지 않았습니다."는 "x에는 피어가 필요하지만 y는 설치되지 않았습니다." "x는 y의 동료 중 하나가 필요하지만 해당 피어는 설치되지 않았으며 필요한 y의 동료를 알려주지 않습니다."
— Dan Cancro

1
내가 수동으로 피어 종속성 목록에 설치 또한 경우에, 나는 그들을 얻을 extraneous패키지
— plsnoban

3
패키지 종속성에 추가해야하므로 "비극적"이 있습니다.
— Dinoboff

37

정확한 값 경고로 package.json을 다시 작성하여 해결했습니다.

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.

package.json : "es6-shim": "^ 0.33.3",

npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2

package.json : "reflect-metadata": "0.1.2",

Delete node_modules directory

npm install

15
아마는 npm cache clean, npm installnode_modules을 닦아보다 더 할 수있다? 나는 항상 node_modules를 삭제하지 말고 디렉토리를 날려 버리는 대신 문제가 무엇인지 알고 싶습니다.
— Bruno

나는 이것이 사람들이 그것을 작동시키는 것이 매우 안전한 생각이라고 생각하지 않습니다. 라이브러리와 일치하지 않는 코드를 사용하여 충돌을 악화시키는 변화가 더 큽니다.
— zoomlar

npm 클린 캐시를 실행하는 동안 다음 오류 메시지가 나타납니다. npm ERR! npm @ 5부터 npm 캐시는 손상 문제로부터 자동 복구되며 캐시에서 추출 된 데이터는 유효합니다. 모든 것이 일관되게하려면 대신 'npm cache verify'를 사용하십시오. 반면, 설치 프로그램과 관련된 문제를 디버깅하는 npm install --cache /tmp/empty-cache경우 실제 캐시를 숨기는 대신 임시 캐시를 사용하는 데 사용할 수 있습니다 . npm ERR! npm ERR! 전체 캐시를 삭제하려면 --force를 사용하여이 명령을 다시 실행하십시오.
— Tarun

22

이 시나리오 및 다른 일부에 유용한 치트 코드 ...

MET── UNMET PEER DEPENDENCY @ angular / common @ 4.0.2

MET── UNMET PEER DEPENDENCY @ angular / compiler @ 4.0.2

MET── UNMET 피어 디펜 던시 @ angular / compiler-cli @ 4.0.2

MET── UNMET PEER DEPENDENCY @ angular / core @ 4.0.2

MET── UNMET PEER DEPENDENCY @ angular / forms @ 4.0.2

MET── UNMET PEER DEPENDENCY @ angular / http @ 4.0.2

MET── UNMET PEER DEPENDENCY @ angular / platform-browser @ 4.0.2

├── UNMET PEER DEPENDENCY @ angular / platform-browser-dynamic @ 4.0.2>

  1. 오류를 코드 편집기에 복사 하여 붙여 넣습니다 .
  2. 커서 로 원치 않는 부분을 강조 표시 하십시오. 이 경우 '├── UNMET PEER DEPENDENCY'
  3. command + d 를 여러 번 누릅니다 .
  4. Delete 키를 두 번 누릅니다 . (실수로 '├── UNMET PEER DEPENDENCY'를 강조 표시 한 경우 스페이스를 누르십시오.)
  5. 한 번 누릅니다. 'npm install'추가
  6. 한 번 누르십시오. '-저장 추가
  7. 물건을 진료소에 다시 복사하고 실행하십시오.

npm install @ angular / common @ 4.0.2 @ angular / compiler @ 4.0.2 @ angular / compiler-cli @ 4.0.2 @ angular / core @ 4.0.2 @ angular / forms @ 4.0.2 @ angular / http @ 4.0 .2 @ angular / platform-browser @ 4.0.2 @ angular / platform-browser-dynamic @ 4.0.2 --save


8
이 옵션은 --save분명히 더 이상 NPM 5.0.0로 필요하지 않습니다 : stackoverflow.com/a/19578808/12484
— 존 슈나이더

12

이 프로젝트 npm-install-peers는 동료를 감지하여 설치합니다.

현재 자동으로 v1.0.1다시 쓰는 기능은 지원하지 않으므로 package.json여기서 우리의 필요를 해결할 수 있습니다.

https://github.com/spatie/npm-install-peers/issues/4 비행 중에 지원을 추가하십시오


36
달릴 때 나에게이 메시지를 주었다. This package doesn't seem to have any peerDependencies
— Thabung

2
같은 메시지가 있습니다.
— Thibault Boursier

7
내가 이해 한대로에 등록되어 npm-install-peers설치 peerDependencies됩니다 package.json. peerDependencies와 같은 종속성 은 설치하지 않습니다 angular2.
— drizzd

예, 두 번째 @drizzd 의견 : 프로젝트의 package.json에 나열된 npm-install-peers설치 전용입니다 "peerDependencies". 직접 피어 종속성이 아닌 "peerDependencies"각 node_modules/<package>/package.json파일에 나열된 파일 을 설치하려고합니다 .
— Will Farley

5

가지고있는 npm 패키지를 개발할 때 이러한 오류가 발생했습니다 peerDependencies. 나는 peerDependencies또한로 나열되어 있는지 확인해야 했습니다 devDependencies. 프로젝트는 전체적으로 설치된 패키지를 자동으로 사용하지 않습니다.


이것은 단순히 '종속성'에 추가하는 것이 다소 어색하기 때문에 깔끔한 솔루션입니다!
— 44

0

원사를 설치 한 다음 실행

원사 글로벌 추가 설치-발음


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.