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.