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
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