Tslint: Unerfüllte Peer-Abhängigkeit typescript@>=1.6.2

Erstellt am 22. Nov. 2015  ·  43Kommentare  ·  Quelle: palantir/tslint

Ich versuche, tslint 3.0.0 zu installieren, aber es sagt immer "Unmet Peer Dependency typescript@>=1.6.2"

Wie bekomme ich das weg?

External Question

Hilfreichster Kommentar

Peer-Abhängigkeiten werden von npm v3.x nicht automatisch installiert (sie waren in 1.x und 2.x automatisch).

hast du typescript neben tslint installiert?

Aktualisieren

Fügen Sie die "Lösung" hier ein, damit Sie nicht scrollen müssen, um sie zu sehen:

Dies ist ein NPM-Usability-Bug. Die einzige Lösung ist die gleichzeitige Installation:

npm install -g tslint typescript

Alle 43 Kommentare

Peer-Abhängigkeiten werden von npm v3.x nicht automatisch installiert (sie waren in 1.x und 2.x automatisch).

hast du typescript neben tslint installiert?

Aktualisieren

Fügen Sie die "Lösung" hier ein, damit Sie nicht scrollen müssen, um sie zu sehen:

Dies ist ein NPM-Usability-Bug. Die einzige Lösung ist die gleichzeitige Installation:

npm install -g tslint typescript

Ich habe sowohl Tslint als auch Typescript auf globaler Ebene installiert. Aktuelle Typoskriptversion 1.6.2

Ich versuche dies auch unter Windows zu tun.

Bekomme das gleiche Problem bei einer Neuinstallation unter OSX mit der Brew-Distribution von nodejs .

Dies scheint auf meiner CentOS-Box nicht zu passieren.

Hier ist die Reproduktion mit einem benutzerdefinierten Präfix (damit ich meine vorhandenen Module nicht wegblasen muss):

leonyu-workstation:~$ npm config set prefix hihi
leonyu-workstation:~$ npm list -g


leonyu-workstation:~$ npm install typescript -g
/Users/leonyu/hihi/bin/tsc -> /Users/leonyu/hihi/lib/node_modules/typescript/bin/tsc
/Users/leonyu/hihi/bin/tsserver -> /Users/leonyu/hihi/lib/node_modules/typescript/bin/tsserver
/Users/leonyu/hihi/lib
└── [email protected]

leonyu-workstation:~$ npm install tslint -g
/Users/leonyu/hihi/bin/tslint -> /Users/leonyu/hihi/lib/node_modules/tslint/bin/tslint
/Users/leonyu/hihi/lib
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   ├── [email protected]
│ │   ├─┬ [email protected]
│ │   │ └─┬ [email protected]
│ │   │   ├── [email protected]
│ │   │   └── [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.6.2

npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.6.2 but none was installed.
leonyu-workstation:~$

Ist es nur eine Warnung, die hier produziert wird? Oder funktioniert Ihr globales tslint tatsächlich nicht, wenn Sie versuchen, es auszuführen? Dies kann ein NPM-Bug sein (falsche positive Warnung von ihnen).

Nachdem ich ein bisschen damit gespielt habe, scheint es, als ob tslint funktioniert. Könnte ein npm-Bug sein. Ich werde nach einigen weiteren Tests weitere Informationen bereitstellen.

habe auch das gleiche problem

@adidahiya erwähnenswert, dass tslint v3.0.0 die peerDepedency wie folgt aufgelistet hat:

  "peerDependencies": {
    "typescript": ">=1.6.2"
  }

Das bedeutet, dass, wenn Sie eine Vorabversion (oder was auch immer npm verwendet) Version von TypeScript verwenden, die Peer-Abhängigkeit als nicht erfüllt betrachtet wird:

$ npm install --save-dev [email protected]
npm WARN install Couldn't install optional dependency: Unsupported
[email protected] /home/myitcv/tmp/typescript_test
├── [email protected]
└── UNMET PEER DEPENDENCY [email protected]

Der Zweig next (der eine Reihe von Commits hinter v3.0.0 ) hat jedoch Folgendes:

  "peerDependencies": {
    "typescript": ">=1.7.0 || >=1.7.0-dev.20151003 || >=1.8.0-dev"
  }

die mit der Vorabversion vollkommen zufrieden ist.

Auch diese Warnung kann einfach ignoriert werden. Aber erwähnenswert für diejenigen, die jetzt versuchen, 3.0.0 gegen eine next Version von TypeScript zu installieren.

Es sei denn, Sie möchten die Peer-Abhängigkeitsoptionen der Vorabversion in die Hauptversionen von tslint ? Schadet das?

@myitcv ja, wir haben ein bisschen darüber nachgedacht ... Ich würde es vorziehen, stabile tslint-Versionen an die stabilen Versionen von typescript zu binden, und wenn Benutzer die next Funktionalität wünschen, sollten sie die next Verteilung beider Bibliotheken

@adidahiya, aber das passiert mit der aktuellen stabilen Typoskript-Version

@helios1138 es ist aber nur ein Fehler, oder? funktioniert Ihre Binärdatei tslint trotz des Fehlers? installierst du global? brauche noch ein paar infos...

@helios1138 - Wenn Sie beide global installieren, handelt es sich wahrscheinlich um ein npm Problem, wie in anderen Beiträgen im Thread erwähnt wurde.

@adidahiya hat verstanden. Freuen Sie sich auf die Aktualisierung der next Distribution für tslint :+1:

@gclifford @helios1138 können Sie vor der Installation versuchen, npm cache clean auszuführen ? Könnte mit diesem Problem zusammenhängen: https://github.com/npm/npm/issues/10365

Ich habe ein Problem damit, npm gibt mir diese Warnung bei der Installation, nicht bei gulp-tslint@latest , aber in beiden Fällen wird beim Versuch, es zu verwenden, ein Fehler angezeigt wie:

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i --save gulp-tslint<strong i="7">@latest</strong>
npm WARN deprecated [email protected]: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.
npm WARN [email protected] requires a peer of tslint@^3 || >=3.1.0-dev but none was installed.
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ gulp tslint
module.js:340
    throw err;
    ^

Error: Cannot find module 'tslint'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:289:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/aplicaciones2/Documents/Programming/OSGroup/taoappionic/node_modules/gulp-tslint/index.js:7:14)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)

Irgendwelche Ideen , wie sie zu beheben auch nach npm cache clean ?, Wenn ich installiere [email protected] , dass Entschlüsse zu 3.6.0 funktioniert es so sollte es ein Problem mit Repository seines gulp-tslint .

@Luchillo sieht aus, als hättest du dort nur gulp-tslint und nicht tslint installiert installed

Wurde es getrennt? warum mit v3.6.0 noch funktioniert? Soweit ich weiß, ist gulp-tslint ein Wrapper für das tslint-npm-Paket, nicht wahr?

@Luchillo nein, es ist kein Wrapper, es ist ein Schluck-Plugin. Das neueste gulp-tslint hat tslint als Peer-Abhängigkeit , sodass tslint nicht automatisch installiert wird. Sie müssen beide npm install tun. https://nodejs.org/en/blog/npm/peer-dependencies/

Oh, da ich gerade v3.6.0 verwendet habe, wusste ich nichts von der Änderung, aber es sollte in einem lokalen Projekt, einem globalen oder beiden installiert werden?

Auch die Peer-Abhängigkeit für [email protected] sagt auch unmet, selbst

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i -g typescript
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
/usr/local/bin/tsserver -> /usr/local/lib/node_modules/typescript/bin/tsserver
/usr/local/lib
└── [email protected] 

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i -g tslint
/usr/local/bin/tslint -> /usr/local/lib/node_modules/tslint/bin/tslint
/usr/local/lib
├── [email protected] 
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.
npm WARN In [email protected] replacing bundled version of findup-sync with [email protected]
npm WARN In [email protected] replacing bundled version of optimist with [email protected]
npm WARN In [email protected] replacing bundled version of underscore.string with [email protected]
npm WARN In [email protected] replacing bundled version of glob with [email protected]
npm WARN In [email protected] replacing bundled version of once with [email protected]
npm WARN In [email protected] replacing bundled version of inherits with [email protected]
npm WARN In [email protected] replacing bundled version of inflight with [email protected]
npm WARN In [email protected] replacing bundled version of minimatch with [email protected]
npm WARN In [email protected] replacing bundled version of wrappy with [email protected]
npm WARN In [email protected] replacing bundled version of brace-expansion with [email protected]
npm WARN In [email protected] replacing bundled version of concat-map with [email protected]
npm WARN In [email protected] replacing bundled version of balanced-match with [email protected]
npm WARN In [email protected] replacing bundled version of wordwrap with [email protected]
npm WARN In [email protected] replacing bundled version of minimist with [email protected]

@Luchillo gulp-tslint hat seine Version auf 4.x aktualisiert, was bedeutet, dass es grundlegende Änderungen gegenüber 3.x gibt.

Was die Warnung "unerfüllte Peer-Abhängigkeit" angeht, darum geht es im obigen Thread - ich denke, es ist ein NPM-Fehler. verschwindet es, wenn Sie deinstallieren, npm cache clean ausführen und global erneut installieren?

@adidahiya
Hallo, ich bekomme die gleiche Warnung, auch nach npm cache clean
beide sind global installiert.

npm ls -g
├── [email protected]
├── [email protected]

when installing
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

Es ist komisch. Es ist entweder eine UNMET PEER ABHÄNGIGKEIT oder fremd , siehe unten.

Sie müssen sich also zwischen zwei Fehlern entscheiden. Wenn Sie Großbuchstaben nicht mögen, können Sie npm install typescript oder sogar ein npm install typescript --save-dev wenn Sie zukünftigen Kollegen diese Großbuchstaben ersparen möchten. Aber ich entscheide mich, wieder zu deinstallieren, da die Dinge im Allgemeinen in Ordnung waren.

├── [email protected] extraneous   <---
├── [email protected]
├── [email protected]
└── [email protected] (git+https://4c2b0edc3e30fscrambled:[email protected]/company/project/.git#f9fscrambled101)

npm ERR! extraneous: [email protected] C:\Code\project\node_modules\typescript
npm ERR! peer dep missing: kerberos@~0.0, required by [email protected]

C:\Code\project>npm uninstall typescript
- [email protected] node_modules\typescript
[email protected] C:\Code\project\
├── [email protected]
├── [email protected]
├── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.7.3   <---

npm WARN [email protected] requires a peer of kerberos@~0.0 but none was installed.
npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

C:\Code\project/>

Gleiches Problem hier mit Ubuntu und npm 3.3.12

sim@sim-desktop:~/code/btsync/HTML/refugees$ sudo npm install -g typescript
/usr/bin/tsc -> /usr/lib/node_modules/typescript/bin/tsc
/usr/bin/tsserver -> /usr/lib/node_modules/typescript/bin/tsserver
/usr/lib
└── [email protected] 

sim@sim-desktop:~/code/btsync/HTML/refugees$ sudo npm install -g tslint
/usr/bin/tslint -> /usr/lib/node_modules/tslint/bin/tslint
/usr/lib
├── [email protected] 
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

Wollte nur das gleiche Problem unter Windows 10, Knoten 5.7.1, npm 3.5.3 und typescript 1.8.7 melden:

C:\Users\cmezzasalma\Sviluppo\SmartScarlett>npm install -g typescript
C:\Users\cmezzasalma\AppData\Roaming\npm\tsc -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\typescript\bin\tsc
C:\Users\cmezzasalma\AppData\Roaming\npm\tsserver -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
C:\Users\cmezzasalma\AppData\Roaming\npm
└── [email protected]


C:\Users\cmezzasalma\Sviluppo\SmartScarlett>npm install -g tslint
C:\Users\cmezzasalma\AppData\Roaming\npm\tslint -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\tslint\bin\tslint
C:\Users\cmezzasalma\AppData\Roaming\npm
├── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

Ich habe das gleiche Problem unter Win 8 mit TypeScript 1.8.7

C:\Windows\system32>npm install -g tslint
C:\Benutzer\indika\AppData\Roamingnpmtslint -> C:\Benutzer\indika\AppData\Roaming\
npmnode_modulestslint\bintslint
C:\Benutzer\indika\AppData\Roamingnpm
[email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN EPEERINVALID [email protected] erfordert einen Peer von typescript@>=1.7.3 aber nicht
e wurde installiert.

Ich melde mich nur, um zu sagen, dass ich das gleiche Problem unter OSX mit Knoten v5.7.0 und npm 3.6.0 habe

Ich habe das gleiche Problem unter OS X mit npm 3.7.3

Ich denke, dies ist ein NPM-Usability-Bug, die einzige Lösung besteht darin, die Peers gleichzeitig zu installieren: npm install -g tslint typescript .

verwandt: https://github.com/npm/npm/issues/9857

Die gleichzeitige Installation scheint zu funktionieren, keine Warnmeldung! danke @adidahiya

Ein Update dazu, ich habe dieses Problem mit Typoskript Version 1.8.10.
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

@adidahiya es scheint, dass tslint derzeit nicht zusammen mit dem

@Turbo87 hmm, bist du dir sicher? Diese Zeile scheint darauf hinzudeuten, dass 2.1.0-dev funktionieren würde: https://github.com/palantir/tslint/blob/next/package.json#L49. Wissen Sie, dass NPM v2 hier anders vorgeht?

ah, die Sache ist also, dass wir die Einschränkung ^3.14.0-dev.0 für tslint verwendet haben, aber seit 3.14.0 veröffentlicht wurde, erfüllt es die Einschränkung und entfernt die gelockerte peerDependency-Einschränkung für Typoskript wieder. war das beabsichtigt? machen wir hier etwas falsch?

@Turbo87 Es war beabsichtigt, obwohl es ein unglückliches Nebenprodukt -dev.x endet, ist eine Veröffentlichung, die entwickelt wurde, um mit den neuesten Vorabversionen von TS, insbesondere der 2.x-Zeile, zusammenzuarbeiten.

Jede andere Version als -dev.x ist so konzipiert, dass sie mit typescript@latest , das derzeit 1.8.10 ist.

Wenn Sie sich auf die neuesten Versionen von TSLint verlassen möchten, die zu den neuesten Versionen von TS gehören, würde ich empfehlen, entweder von tslint@next oder einer einzelnen spezifischen Version von TSLint abzuhängen.

@JKillian danke für die Klarstellung! Da Peer-Abhängigkeiten in NPM v3 nur informativ sind und diese unerwarteten Probleme in NPM v2 verursachen, wäre es sinnvoll, die Peer-Abhängigkeit stattdessen durch einen Kompatibilitätshinweis in der README-Datei zu ersetzen?

Hmm, vielleicht verstehe ich das falsch, aber ist Ihr Problem nicht lösbar, indem Sie einfach ändern, wie Sie die Abhängigkeit von TSLint angeben? Ich zögere, die peerDependency zu entfernen, da sie zwar hauptsächlich informativ ist, aber die richtigen TS-Versionen darstellt, mit denen jedes Paket funktioniert.

Ist Ihr Problem nicht lösbar, indem Sie einfach ändern, wie Sie die Abhängigkeit von TSLint angeben?

Ja, das Anheften der Abhängigkeit würde das Problem lösen, aber natürlich werden wir auf diese Weise keine Updates erhalten.

Ich zögere, die peerDependency zu entfernen, da sie zwar hauptsächlich informativ ist, aber die richtigen TS-Versionen darstellt, mit denen jedes Paket funktioniert.

zwei Anmerkungen dazu:

  • Das Problem ist, dass es tatsächlich nicht nur zur Information über NPM v2 dient. Wenn es nur informativ sein soll, sollte es stattdessen in der README stehen. (Die Alternative besteht darin, Benutzer zu zwingen, NPM v3 zu verwenden, aber da NPM v2 bis Node 4 ausgeliefert wurde, ist dies keine wirklich gute Option)
  • Sie sagten, dass -dev für die Arbeit mit TS-Dev entwickelt wurde, während Nicht-Dev nicht funktioniert, richtig? aber wenn non-dev auf den dev-versionen basiert, warum sollte dann nicht-dev nicht auch mit TS-dev funktionieren?

Mir geht es gut, was immer Sie für die beste Lösung halten, ich würde es nur gerne verstehen ... 😉

Wir könnten sogar so weit gehen, in zwei verschiedenen Paketen zu veröffentlichen, aber ich denke, das ist für Bibliotheken von Drittanbietern, die TSLint integrieren, und für Benutzer ein Problem.

Sie sagten, dass -dev so konzipiert ist, dass es mit TS-dev funktioniert, während non-dev es nicht ist, richtig? aber wenn non-dev auf den dev-versionen basiert, warum sollte dann nicht-dev nicht auch mit TS-dev funktionieren?

Nun, die beiden Versionen sind _meistens_ gleich, aber es kann sein, dass sie ein wenig voneinander abweichen. Die -dev Versionen enthalten Code-Bits, die neue Sprachfeatures korrekt verarbeiten, und diese Code-Bits würden mit einer älteren Version von TS nicht funktionieren. Diese Code-Bits sind auch nicht in den Nicht-Dev-Versionen enthalten.

Ich mache mir Sorgen, wenn die peerDependency entfernt würde, würden die Leute am Ende nicht kompatible Versionen von TS und TSLint installiert haben und nicht wissen, was los war. Die Dinge, wie sie jetzt sind, sind jedoch auch nicht perfekt, wie Sie richtig betonen, daher bin ich mir bei der besten Lösung nicht sicher.

Es wäre schön, wenn @next immer neuer wäre als @latest . Vielleicht lässt sich das einfach per CI automatisieren.

Dies stürzt auch npm shrinkwrap mit der Typescript-Version ^1.9.0-dev ab, die von @angular/compiler-cli und @angular/tsc-wrapped - ts 1.8.10 ist zu niedrig für diese Pakete und 1.9.0-dev verursacht einen ungültigen Peer auf tslint.

Bearbeiten: npm 3.10.x

+1

+-- [email protected]
`-- UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

C:\Windows\system32>tsc -v
Version 1.8.10

Kann nicht anfangen, es mit vscode 1.4.0 zusammenzuarbeiten

sudo npm i tslint -g 
......
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.
$ tslint --version
3.15.1

Fehler wird oben in vscode angezeigt: Fehler beim Laden der tslint-Bibliothek. Bitte installiere tslint in deinem Workspace

Versucht, "tslint.enable" zu setzen: true|false (im Userspace und Workspace) - hat nicht geholfen.

$ npm --version
3.10.3

$ node --version
v6.4.0

Irgendein Rat?

Ich habe mein package.json geändert, um Folgendes zu verwenden, und es funktioniert jetzt auf Node v4 bis v6:

  "devDependencies": {
    "tslint": "3.15.0-dev.0",
    "typescript": "^2.1.0-dev.20160827"
  },

Schließen dieses Problems, da es sich um ein NPM-Problem handelt und außerhalb unserer Kontrolle liegt

🤖 Beep boop! 👉 TSLint ist veraltet 👈 und Sie sollten zu typescript-eslint wechseln ! 🤖

🔒 Dieses Problem wird gesperrt, um weitere unnötige Diskussionen zu vermeiden. Vielen Dank! 👋

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen