Tslint: DĂ©pendance des pairs non satisfaite typescript@>=1.6.2

CrĂ©Ă© le 22 nov. 2015  Â·  43Commentaires  Â·  Source: palantir/tslint

J'essaie d'installer tslint 3.0.0 mais il n'arrĂȘte pas de dire "Unmet Peer Dependency typescript@>=1.6.2"

Comment faire pour que ça s'en aille ?

External Question

Commentaire le plus utile

les dépendances homologues ne sont pas installées automatiquement par npm v3.x (elles étaient automatiques dans 1.x et 2.x).

avez-vous installé typescript cÎté de tslint ?

Mettre Ă  jour

Collez la "solution" ici pour ne pas avoir à faire défiler pour la voir :

Il s'agit d'un bug d'utilisabilité NPM. La seule solution est d'installer simultanément :

npm install -g tslint typescript

Tous les 43 commentaires

les dépendances homologues ne sont pas installées automatiquement par npm v3.x (elles étaient automatiques dans 1.x et 2.x).

avez-vous installé typescript cÎté de tslint ?

Mettre Ă  jour

Collez la "solution" ici pour ne pas avoir à faire défiler pour la voir :

Il s'agit d'un bug d'utilisabilité NPM. La seule solution est d'installer simultanément :

npm install -g tslint typescript

J'ai installé à la fois tslint et tapuscrit au niveau mondial. Version tapuscrite actuelle 1.6.2

J'essaye aussi de le faire sous Windows.

Obtenir le mĂȘme problĂšme lors d'une installation propre sur OSX en utilisant la distribution Brew de nodejs .

Cela ne semble pas se produire sur ma boĂźte CentOS.

Voici à reproduire en utilisant un préfixe personnalisé (donc je n'ai pas besoin de souffler mes modules existants):

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:~$

Est-ce juste un avertissement qui est produit ici ? Ou est-ce que votre tslint global ne fonctionne pas si vous essayez de l'exĂ©cuter ? Cela peut ĂȘtre un bogue NPM (faux avertissement positif de leur part).

AprĂšs avoir jouĂ© un peu avec, il semble que tslint fonctionne correctement. Peut-ĂȘtre un bug npm. Je donnerai plus d'informations aprĂšs quelques tests supplĂ©mentaires.

a aussi le meme probleme

@adidahiya vaut la peine de noter que tslint v3.0.0 a le peerDepedency répertorié comme:

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

ce qui signifie que si vous utilisez une version préliminaire (ou quel que soit le terme utilisé par npm ) de TypeScript, il considÚre que la dépendance aux pairs n'a pas été satisfaite :

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

Cependant, la branche next (qui est un certain nombre de commits derriÚre v3.0.0 ) a ce qui suit :

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

qui est parfaitement satisfait de la version préliminaire.

Encore une fois, cet avertissement peut simplement ĂȘtre ignorĂ©. Mais il convient de noter pour ces personnes qui essaient maintenant d'installer 3.0.0 contre une version next de TypeScript.

À moins que vous ne soyez content d'inclure les options de dĂ©pendance entre pairs de prĂ©-version dans les versions principales de tslint ? Y a-t-il mal Ă  faire cela ?

@myitcv ouais nous y avons pensé un peu... Je préférerais garder les versions stables de tslint liées aux versions stables de typescript, et si les utilisateurs veulent la fonctionnalité next , ils devraient utiliser le next distribution des deux bibliothÚques

@adidahiya mais cela se produit avec la version stable actuelle du

@ helios1138 c'est juste une erreur, non ? votre binaire tslint fonctionne-t-il malgré l'erreur ? installez-vous globalement ? besoin de plus d'infos...

@ helios1138 - si vous installez les deux à l'échelle mondiale, il s'agit probablement d'un problÚme de npm , comme cela a été mentionné dans d'autres articles du fil.

@adidahiya a compris. Attendez-vous à la mise à jour de la distribution next pour tslint :+1 :

@gclifford @helios1138 pouvez-vous essayer d'exĂ©cuter npm cache clean avant l'installation ? Peut-ĂȘtre liĂ© Ă  ce problĂšme : https://github.com/npm/npm/issues/10365

J'ai un problĂšme avec cela, npm me donne cet avertissement lors de l'installation, ce n'est pas le cas avec gulp-tslint@latest , mais dans les deux cas, lorsque j'essaie de l'utiliser, une erreur du type :

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)

Des idĂ©es sur la façon de rĂ©parer mĂȘme aprĂšs npm cache clean ?, si j'installe [email protected] qui rĂ©sout Ă  3.6.0 cela fonctionne donc cela devrait ĂȘtre un problĂšme avec le rĂ©fĂ©rentiel de gulp-tslint .

@Luchillo semble que vous n'ayez installé que gulp-tslint et pas tslint là-bas

S'est-il séparé ? pourquoi avec v3.6.0 fonctionne toujours ? pour autant que je sache, gulp-tslint est un wrapper pour le package tslint npm, n'est-ce pas?

@Luchillo non, ce n'est pas un wrapper, c'est un plugin gulp. le dernier gulp-tslint a tslint comme dépendance de pair , donc tslint ne s'installe pas automatiquement. vous devez npm install deux. https://nodejs.org/en/blog/npm/peer-dependencies/

Oh, comme je venais d'utiliser la v3.6.0 avant, je n'Ă©tais pas au courant du changement, mais il devrait ĂȘtre installĂ© dans un projet local, global ou les deux ?

De plus, la dĂ©pendance entre homologues pour [email protected] indique Ă©galement non satisfaite, mĂȘme avec le type de script installé :

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 a mis Ă  jour sa version vers 4.x, ce qui signifie qu'il y a des changements importants par rapport Ă  3.x.

en ce qui concerne l'avertissement "dépendance aux pairs non satisfaite", c'est le sujet du fil ci-dessus - je pense que c'est un bogue NPM. disparaßt-il si vous désinstallez, exécutez npm cache clean et réinstallez globalement ?

@adidahiya
Salut, je reçois le mĂȘme avertissement, mĂȘme aprĂšs npm cache clean
les deux sont installés dans le monde entier.

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.

C'est Ă©trange. Il s'agit soit d'une DEPENDANCE NON METTRE PAR LES PAIRS , soit d'un Ă©tranger , voir ci-dessous.

Vous devez donc choisir entre deux erreurs. Si vous n'aimez vraiment pas les majuscules, vous pouvez faire des npm install typescript ou mĂȘme un npm install typescript --save-dev si vous voulez Ă©pargner ces majuscules aux futurs collĂšgues. Mais j'ai choisi de dĂ©sinstaller Ă  nouveau, car les choses fonctionnaient gĂ©nĂ©ralement bien.

├── [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/>

MĂȘme problĂšme ici avec Ubuntu et 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.

Je voulais juste signaler le mĂȘme problĂšme sur Windows 10, nƓud 5.7.1, npm 3.5.3 et tapuscrit 1.8.7 :

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.

J'ai le mĂȘme problĂšme sur Win 8 avec TypeScript 1.8.7

C:\Windows\system32>npm install -g tslint
C:\Users\indika\AppData\Roamingnpmtslint -> C:\Users\indika\AppData\Roaming\
npmnode_modulestslint\bintslint
C:\Users\indika\AppData\Roamingnpm
[email protected]
└── DÉPENDANCE DES PAIRS NON METTRE EN UVRE typescript@>=1.7.3

npm WARN EPEERINVALID [email protected] nĂ©cessite un pair de typescript@>=1.7.3 mais non
e a été installé.

Juste pour dire que j'ai le mĂȘme problĂšme sur OSX avec le nƓud v5.7.0 et npm 3.6.0

J'ai le mĂȘme problĂšme sur OS X avec npm 3.7.3

Je pense qu'il s'agit d'un bug d'utilisabilité NPM, la seule solution étant d'installer les pairs simultanément : npm install -g tslint typescript .

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

Les installer simultanément semble fonctionner, aucun message d'avertissement ! merci @adidahiya

Une mise à jour à ce sujet, j'ai ce problÚme, avec la version dactylographiée 1.8.10.
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

@adidahiya, il semble que tslint ne soit actuellement pas installable avec la version typescript 2.1.0-dev sur NPM 2 en raison de l'échec de la dépendance aux pairs (voir # 1401). existe-t-il une solution de contournement autre que de forcer TravisCI (et nos développeurs) à utiliser NPM 3 pour les anciennes versions de Node ?

@Turbo87 hmm, tu es sûr ? Cette ligne semble suggérer que 2.1.0-dev fonctionnerait : https://github.com/palantir/tslint/blob/next/package.json#L49. Savez-vous que NPM v2 se comporte différemment ici ?

ah, donc le fait est que nous avons utilisé la contrainte ^3.14.0-dev.0 pour tslint, mais depuis que 3.14.0 été publié, il satisfait à la contrainte et a supprimé à nouveau la contrainte détendue peerDependency sur le typescript. était-ce intentionnel ? faisons-nous quelque chose de mal ici ?

@Turbo87 C'était intentionnel, bien que ce soit un sous-produit malheureux de la façon dont nous réalisons les versions. Toute version se terminant par -dev.x est une version conçue pour fonctionner avec les derniÚres versions préliminaires de TS, en particulier la ligne 2.x en ce moment.

Toute version non -dev.x est conçue pour fonctionner avec typescript@latest , qui est actuellement la version 1.8.10.

Si vous souhaitez vous fier aux versions les plus récentes de TSLint qui vont avec les versions les plus récentes de TS, je vous recommande de dépendre de tslint@next ou d'une seule version spécifique de TSLint.

@JKillian merci pour la clarification! étant donné que les dépendances entre homologues ne sont qu'informatives dans NPM v3 et causent ces problÚmes inattendus dans NPM v2, serait-il judicieux de remplacer la dépendance entre homologues par une note de compatibilité dans le fichier README à la place ?

Hmm, peut-ĂȘtre que je comprends mal, mais votre problĂšme ne peut-il pas ĂȘtre rĂ©solu simplement en changeant la façon dont vous spĂ©cifiez la dĂ©pendance sur TSLint ? J'hĂ©site Ă  supprimer le peerDepedendency car, bien que principalement informatif, il reprĂ©sente les versions correctes de TS avec lesquelles chaque package est conçu pour fonctionner.

votre problĂšme ne peut-il pas ĂȘtre rĂ©solu simplement en changeant la façon dont vous spĂ©cifiez la dĂ©pendance sur TSLint ?

oui, épingler la dépendance résoudrait le problÚme, mais évidemment, nous n'obtiendrons aucune mise à jour de cette façon.

J'hésite à supprimer le peerDepedendency car, bien que principalement informatif, il représente les versions correctes de TS avec lesquelles chaque package est conçu pour fonctionner.

deux commentaires Ă  ce sujet :

  • le problĂšme est qu'il ne s'agit en fait pas que d'informations sur NPM v2. si vous voulez qu'il soit juste informatif, il devrait plutĂŽt ĂȘtre dans le fichier README. (l'alternative est de forcer les utilisateurs Ă  utiliser NPM v3, mais puisque NPM v2 a Ă©tĂ© expĂ©diĂ© jusqu'au nƓud 4, ce n'est pas vraiment une bonne option)
  • vous avez dit que -dev est conçu pour fonctionner avec TS-dev, alors que non-dev ne l'est pas, n'est-ce pas ? mais si non-dev est basĂ© sur les versions dev, alors pourquoi non-dev ne serait-il pas conçu pour fonctionner Ă©galement avec TS-dev ?

Je suis d'accord avec tout ce que vous décidez est la meilleure solution, j'aimerais juste le comprendre...

Nous pourrions mĂȘme aller jusqu'Ă  publier dans deux packages diffĂ©rents, mais j'ai l'impression que c'est pĂ©nible pour les bibliothĂšques tierces qui intĂšgrent TSLint et pour les utilisateurs.

vous avez dit que -dev est conçu pour fonctionner avec TS-dev, alors que non-dev ne l'est pas, n'est-ce pas ? mais si non-dev est basé sur les versions dev, alors pourquoi non-dev ne serait-il pas conçu pour fonctionner également avec TS-dev ?

Eh bien, les deux versions sont _principalement_ les mĂȘmes, mais il se peut qu'elles soient un peu divergentes. Les versions -dev contiennent des morceaux de code qui gĂšrent correctement les nouvelles fonctionnalitĂ©s du langage, et ces morceaux de code ne fonctionneraient pas avec une ancienne version de TS. Ces morceaux de code ne sont pas non plus dans les versions non-dev.

Je crains que si la peerDependency était supprimée, les gens se retrouveraient avec des versions non compatibles de TS et TSLint installées et ne sauraient pas ce qui se passait. Les choses telles qu'elles sont actuellement ne sont pas parfaites non plus, comme vous l'avez souligné à juste titre, je ne suis donc pas sûr de la meilleure solution.

Ce serait bien si @next Ă©tait toujours plus rĂ©cent que @latest . Peut-ĂȘtre que cela peut simplement ĂȘtre automatisĂ© par CI.

Cela plante également npm shrinkwrap avec la version dactylographiée ^1.9.0-dev requise par @angular/compiler-cli et @angular/tsc-wrapped - ts 1.8.10 est trop faible pour ces packages et 1.9.0-dev provoque un homologue invalide sur tslint.

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

Impossible de commencer Ă  travailler avec vscode 1.4.0

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

Une erreur apparaßt en haut de vscode : échec du chargement de la bibliothÚque tslint. Veuillez installer tslint dans votre espace de travail

J'ai essayé de définir "tslint.enable": true|false (dans l'espace utilisateur et l'espace de travail) - cela n'a pas aidé.

$ npm --version
3.10.3

$ node --version
v6.4.0

Aucun conseil?

J'ai modifié mon package.json pour utiliser ce qui suit et cela fonctionne maintenant sur Node v4 jusqu'à v6 :

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

ClĂŽturer ce problĂšme car il s'agit d'un problĂšme de NPM et hors de notre contrĂŽle

Bip boop ! 👉 TSLint est obsolĂšte 👈 et vous devriez passer Ă  typescript-eslint ! đŸ€–

🔒 Ce problĂšme est verrouillĂ© pour Ă©viter d'autres discussions inutiles. Merci! 👋

Cette page vous a été utile?
0 / 5 - 0 notes