2016-04-18 16 views
0

Vorwort: Ich bin neu in JavaScript und ich weiß, dass dies eine grundlegende Frage ist, aber ich sehe mehrere verschiedene Möglichkeiten, eine Abhängigkeit zu einem vorhandenen JavaScript-Projekt hinzuzufügen. Ich überprüfte die Dokumentation verschiedener Stellen, um sicherzustellen, dass ich sie nicht vermasseln würde, und obwohl die Dateien installiert waren, bekam ich eine Menge Zeug in meinem Terminal, das anzeigt, dass ich ein Problem habe.Installieren einer neuen Abhängigkeit in vorhandenen Paket.json

Hier ist, was ich getan habe:

ich ein Projekt mit chai darin ursprünglich installiert hatte. Weiter entlang, ich fand, dass ich JSON-Dateien testen muss und ich entdeckte Chai hat ein Paket mit dem Namen chai-json-schema, also habe ich Installationsanweisungen doppelt überprüft und ich habe es installiert.

installieren ich aus dem Stammverzeichnis von meinem Projekt getippt:

// --save is supposed to put it in the package.json file 
npm install --save chai-json-schema 

Dieses protokolliert:

Adrians-Air:my-javascript-app adrianTheJavaScriptNoob$ npm install --save chai-json-schema 
npm WARN package.json [email protected] No README data 
npm WARN peerDependencies The peer dependency [email protected]>= 1.6.1 < 3 included from chai-json-schema will no 
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly. 
npm ERR! Darwin 15.3.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--save" "chai-json-schema" 
npm ERR! node v4.4.3 
npm ERR! npm v2.15.1 
npm ERR! code EPEERINVALID 

npm ERR! peerinvalid The package [email protected] does not satisfy its siblings' peerDependencies requirements! 
npm ERR! peerinvalid Peer [email protected] wants [email protected]>= 2.1.2 < 4 
npm ERR! peerinvalid Peer [email protected] wants [email protected]>= 1.6.1 < 3 

npm ERR! Please include the following file with any support request: 
npm ERR!  /Users/adrianTheJavaScriptNoob/Documents/Developer/JavaScript/alexa-app-server/examples/apps/my-javascript-app/npm-debug.log 

Ich denke, npm will verschiedene Versionen als das, was ich installiert habe. Ich bin bestrebt, es nicht zu einer Rekursion von Mist-Ups zu machen, also poste ich hier.

Was wäre der beste Weg, um die Installation zu bereinigen?

schaute ich auf npm-debug.log und es sagt dies:

0 info it worked if it ends with ok 
1 verbose cli [ '/Users/adrianTheJavaScriptNoob/.nvm/v0.10.36/bin/node', 
1 verbose cli '/Users/adrianTheJavaScriptNoob/.nvm/v0.10.36/bin/npm', 
1 verbose cli 'install', 
1 verbose cli 'chai-json-schema' ] 
2 info using [email protected] 
3 info using [email protected] 
4 warn package.json [email protected] No README data 
5 verbose readDependencies using package.json deps 
6 verbose cache add [ '[email protected]^1.6.1', null ] 
7 verbose cache add name=undefined spec="[email protected]^1.6.1" args=["[email protected]^1.6.1",null] 
8 verbose parsed url { protocol: null, 
8 verbose parsed url slashes: null, 
8 verbose parsed url auth: null, 
8 verbose parsed url host: null, 
8 verbose parsed url port: null, 
8 verbose parsed url hostname: null, 
8 verbose parsed url hash: null, 
8 verbose parsed url search: null, 
8 verbose parsed url query: null, 
8 verbose parsed url pathname: '[email protected]^1.6.1', 
8 verbose parsed url path: '[email protected]^1.6.1', 
8 verbose parsed url href: '[email protected]^1.6.1' } 
9 verbose cache add name="chai-json-schema" spec="^1.6.1" args=["chai-json-schema","^1.6.1"] 
10 verbose parsed url { protocol: null, 
10 verbose parsed url slashes: null, 
10 verbose parsed url auth: null, 
10 verbose parsed url host: null, 
10 verbose parsed url port: null, 
10 verbose parsed url hostname: null, 
10 verbose parsed url hash: null, 
10 verbose parsed url search: null, 
10 verbose parsed url query: null, 
10 verbose parsed url pathname: '^1.6.1', 
10 verbose parsed url path: '^1.6.1', 
10 verbose parsed url href: '^1.6.1' } 
11 verbose addNamed [ 'chai-json-schema', '^1.6.1' ] 
12 verbose addNamed [ null, '>=1.6.1-0 <2.0.0-0' ] 
13 silly lockFile 34644556-chai-json-schema-1-6-1 [email protected]^1.6.1 
14 verbose lock [email protected]^1.6.1 /Users/adrianTheJavaScriptNoob/.npm/34644556-chai-json-schema-1-6-1.lock 
15 silly addNameRange { name: 'chai-json-schema', 
15 silly addNameRange range: '>=1.6.1-0 <2.0.0-0', 
15 silly addNameRange hasData: false } 
16 verbose request where is /chai-json-schema 
17 verbose request registry https://registry.npmjs.org/ 
18 verbose request id e2d921f702a3d1b4 
19 verbose url raw /chai-json-schema 
20 verbose url resolving [ 'https://registry.npmjs.org/', './chai-json-schema' ] 
21 verbose url resolved https://registry.npmjs.org/chai-json-schema 
22 verbose request where is https://registry.npmjs.org/chai-json-schema 
23 info trying registry request attempt 1 at 13:00:18 
24 verbose etag "A7MEFNDHR2NAP8SJP41PKZK1S" 
25 http GET https://registry.npmjs.org/chai-json-schema 
26 http 304 https://registry.npmjs.org/chai-json-schema 
27 silly registry.get cb [ 304, 
27 silly registry.get { date: 'Mon, 18 Apr 2016 17:00:18 GMT', 
27 silly registry.get  via: '1.1 varnish', 
27 silly registry.get  'cache-control': 'max-age=300', 
27 silly registry.get  etag: '"A7MEFNDHR2NAP8SJP41PKZK1S"', 
27 silly registry.get  age: '0', 
27 silly registry.get  connection: 'keep-alive', 
27 silly registry.get  'x-served-by': 'cache-jfk1035-JFK', 
27 silly registry.get  'x-cache': 'MISS', 
27 silly registry.get  'x-cache-hits': '0', 
27 silly registry.get  'x-timer': 'S1460998818.398706,VS0,VE32', 
27 silly registry.get  vary: 'Accept-Encoding' } ] 
28 verbose etag https://registry.npmjs.org/chai-json-schema from cache 
29 silly addNameRange number 2 { name: 'chai-json-schema', 
29 silly addNameRange range: '>=1.6.1-0 <2.0.0-0', 
29 silly addNameRange hasData: true } 
30 silly addNameRange versions [ 'chai-json-schema', 
30 silly addNameRange [ '1.0.2', 
30 silly addNameRange  '1.0.3', 
30 silly addNameRange  '1.0.4', 
30 silly addNameRange  '1.0.5', 
30 silly addNameRange  '1.0.7', 
30 silly addNameRange  '1.0.10', 
30 silly addNameRange  '1.1.0', 
30 silly addNameRange  '1.2.0' ] ] 
31 silly lockFile 34644556-chai-json-schema-1-6-1 [email protected]^1.6.1 
32 silly lockFile 34644556-chai-json-schema-1-6-1 [email protected]^1.6.1 
33 error notarget No compatible version found: [email protected]'>=1.6.1-0 <2.0.0-0' 
33 error notarget Valid install targets: 
33 error notarget ["1.0.2","1.0.3","1.0.4","1.0.5","1.0.7","1.0.10","1.1.0","1.2.0"] 
33 error notarget 
33 error notarget This is most likely not a problem with npm itself. 
33 error notarget In most cases you or one of your dependencies are requesting 
33 error notarget a package version that doesn't exist. 
34 error System Darwin 15.3.0 
35 error command "/Users/adrianTheJavaScriptNoob/.nvm/v0.10.36/bin/node" "/Users/adrianTheJavaScriptNoob/.nvm/v0.10.36/bin/npm" "install" "chai-json-schema" 
36 error cwd /Users/adrianTheJavaScriptNoob/Documents/Developer/JavaScript/alexa-app-server/examples/apps/my-javascript-app 
37 error node -v v0.10.36 
38 error npm -v 1.4.28 
39 error code ETARGET 
40 verbose exit [ 1, true ] 

Update:

Ich habe versucht, das chai-json-schema JSON-Paket zu testen, um zu verwenden, dass ein Rückgabewert JSON ist. Ich entdeckte Lager chai hat einen Weg zu testen, dass ein Rückgabewert JSON ist, was erklärt, warum chai-son-schema wurde über ein Jahr lang nicht aktualisiert in .:

return expect(value).to.be.json; // tests if it's a json response 
+1

Dies ist meiner Meinung nach ein ziemlich großer Nachteil von Peer-Abhängigkeiten. Ehrlich gesagt, würde ich die Paketmanager zum Teil auffordern, ihre Peer-Abhängigkeiten zu entfernen, da Sie zwei Pakete haben, die zwei verschiedene Hauptversionen derselben Bibliothek benötigen. Wenn diese Pakete * wirklich * die spezifischen Versionen benötigen (zweifelhaft), sollten sie diese zu tatsächlichen Abhängigkeiten machen. – dvlsg

Antwort

1

Dieser Fehler sagt Ihnen, dass chai Paketversion tut nicht installiert die von chai-json-schema geforderte Version erfüllen.

Wenn Sie bei package.json des chai-json-schema Paket betrachten, werden Sie sehen, dass es die folgende chai Version benötigt:

"peerDependencies": { 
    "chai": ">= 1.6.1 < 3" 
} 

prüfen chai Paketversion installiert ist: npm ls --depth=0, ich glaube, Ihre Version> = 3.

+0

Bingo. Das ist mein Problem. Es ist 3,5. Wie würde ich eine Aktualisierung auf eine bestimmte Version vornehmen? – Adrian

+1

Es ist Teil Ihres Problems. Eine Ihrer Bibliotheken will chai @ 2.1.2, die andere will chai @ 1.6.1, was ein anderes Problem darstellt. Sie können 'npm chai @ 2.1.2' installieren, aber dann wird Ihre Bibliothek, die' chai @ 1.6.1' will, nicht glücklich sein. Es kann immer noch funktionieren, wenn 'Chai' ihre API nicht viel geändert hat, aber das ist nicht garantiert. – dvlsg

+1

Es scheint, dass 'chai-json-schema' Paket nicht mehr unterstützt wird (letztes Commit vor einem Jahr), aber wenn du das wirklich brauchst, musst du deine' chai' Version auf 2.3.0 downgraden: 'npm i -D Chai @ 2.3.0' – alexmac

Verwandte Themen