Tslint: Типовой скрипт Unmet Peer Dependency @> = 1.6.2

Созданный на 22 нояб. 2015  ·  43Комментарии  ·  Источник: palantir/tslint

Я пытаюсь установить tslint 3.0.0, но он продолжает говорить "Unmet Peer Dependency typescript @> = 1.6.2"

Как мне заставить это уйти?

External Question

Самый полезный комментарий

одноранговые зависимости не устанавливаются автоматически в npm v3.x (они были автоматическими в 1.x и 2.x).

вы установили typescript вместе с tslint ?

Обновлять

Вставьте здесь «решение», чтобы вам не пришлось прокручивать его, чтобы увидеть его:

Это ошибка юзабилити NPM. Единственное решение - установить одновременно:

npm install -g tslint typescript

Все 43 Комментарий

одноранговые зависимости не устанавливаются автоматически в npm v3.x (они были автоматическими в 1.x и 2.x).

вы установили typescript вместе с tslint ?

Обновлять

Вставьте здесь «решение», чтобы вам не пришлось прокручивать его, чтобы увидеть его:

Это ошибка юзабилити NPM. Единственное решение - установить одновременно:

npm install -g tslint typescript

Я установил и tslint, и машинописный текст на глобальном уровне. Текущая версия машинописного текста 1.6.2

Я тоже пытаюсь сделать это в Windows.

Получение той же проблемы при чистой установке на OSX с использованием дистрибутива Brew nodejs .

На моем компьютере с CentOS этого не происходит.

Вот для воспроизведения с использованием настраиваемого префикса (так что мне не нужно удалять мои существующие модули):

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

Это просто предупреждение? Или ваш глобальный tslint действительно не работает, если вы попытаетесь его запустить? Это может быть ошибка NPM (ложное срабатывание от них).

Поиграв с ним немного, похоже, что tslint работает нормально. Возможно, это ошибка npm. Я предоставлю больше информации после еще нескольких тестов.

также имеет ту же проблему

@adidahiya стоит отметить, что tslint v3.0.0 содержит peerDepedency указанное как:

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

это означает, что если вы используете предварительную версию TypeScript (или любой другой термин, который используется в npm ), он считает, что одноранговая зависимость не соблюдена:

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

Однако ветка next (которая представляет собой количество коммитов за v3.0.0 ) имеет следующее:

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

что вполне устраивает предварительная версия.

Опять же, это предупреждение можно просто проигнорировать. Но стоит отметить тех людей, которые сейчас пытаются установить 3.0.0 вместо next версии TypeScript.

Если вас не устраивает включение предварительных версий одноранговых зависимостей в основные выпуски tslint ? Есть ли в этом вред?

@myitcv да, мы подумали об этом немного ... Я бы предпочел, чтобы стабильные выпуски tslint были привязаны к стабильным выпускам машинописного текста, и если пользователям нужна функциональность next , им следует использовать next распределение обеих библиотек

@adidahiya, но это происходит с текущей стабильной версией машинописного

@ helios1138 это просто ошибка, да? ваш бинарный файл tslint работает, несмотря на ошибку? вы устанавливаете глобально? нужна дополнительная информация ...

@ helios1138 - если вы устанавливаете оба глобально, это, скорее всего, проблема npm как упоминалось в других сообщениях в ветке.

@adidahiya понял. Ожидайте обновления next для tslint : +1:

@gclifford @ helios1138 можно попробовать запустить npm cache clean перед установкой? Может быть связано с этой проблемой: https://github.com/npm/npm/issues/10365

У меня проблема с этим, npm дает мне это предупреждение при установке, оно не с gulp-tslint@latest , но в обоих случаях при попытке его использования выдает ошибку, например:

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)

Есть идеи, как исправить даже после npm cache clean ?, Если я установлю [email protected] который разрешается до 3.6.0, он работает, поэтому это должна быть проблема с репозиторием gulp-tslint .

@Luchillo выглядит так, будто вы установили только gulp-tslint, а не tslint.

Это разделилось? почему с v3.6.0 все еще работает? насколько я понимаю, gulp-tslint - это оболочка для пакета tslint npm, не так ли?

@Luchillo нет, это не обертка, это плагин gulp. последний gulp-tslint имеет tslint как одноранговую зависимость , поэтому tslint не устанавливается автоматически. вам нужно npm install оба. https://nodejs.org/en/blog/npm/peer-dependencies/

О, как я только что использовал v3.6.0, прежде чем я не знал об изменении, но он должен быть установлен в локальном проекте, глобальном или обоих?

Также одноранговая зависимость для [email protected] также говорит о неудовлетворении, даже с установленным машинописным

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 обновил свою версию до 4.x, что означает критические изменения с 3.x.

Что касается предупреждения о «неудовлетворенной одноранговой зависимости», то это то, о чем идет речь выше - я думаю, что это ошибка NPM. он исчезнет, ​​если вы удалите, запустите npm cache clean и снова установите глобально?

@adidahiya
Привет, я получаю такое же предупреждение даже после npm cache clean
оба установлены глобально.

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.

Это странно. Это либо НЕЗАВИСИМАЯ ЗАВИСИМОСТЬ ОТ ПЕР, либо посторонняя , см. Ниже.

Так что вам придется выбирать между двумя ошибками. Если вам действительно не нравится использование заглавных букв, вы можете сделать npm install typescript или даже npm install typescript --save-dev если хотите избавить будущих коллег от этих капиталов. Но я решил удалить снова, так как в целом все работало нормально.

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

Такая же проблема здесь с Ubuntu и 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.

Просто хотел сообщить о той же проблеме в Windows 10, узел 5.7.1, npm 3.5.3 и машинописный текст 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.

У меня такая же проблема с Win 8 с 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]
└── UNMET PEER DEPENDENCY typescript @> = 1.7.3

npm WARN EPEERINVALID [email protected] требует однорангового узла машинописного текста @> = 1.7.3, но не
е был установлен.

Просто вмешиваюсь, чтобы сказать, что у меня такая же проблема на OSX с node v5.7.0 и npm 3.6.0

У меня такая же проблема с OS X с npm 3.7.3

Я думаю, что это ошибка юзабилити NPM, единственное решение - установить одноранговые узлы одновременно: npm install -g tslint typescript .

связанные: https://github.com/npm/npm/issues/9857

Их одновременная установка, кажется, работает, ни одного предупреждающего сообщения! спасибо @adidahiya

Обновление по этому поводу, у меня эта проблема, с машинописным текстом версии 1.8.10.
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

@adidahiya кажется, что tslint в настоящее время не может быть установлен вместе с версией typescript 2.1.0-dev на NPM 2 из-за сбоя одноранговой зависимости (см. №1401). есть ли обходной путь для этого, кроме принуждения TravisCI (и наших разработчиков) использовать NPM 3 для старых выпусков Node?

@ Turbo87 хм, ты уверен? Эта строка, кажется, предполагает, что 2.1.0-dev будет работать: https://github.com/palantir/tslint/blob/next/package.json#L49. Вы знаете, что NPM v2 здесь работает иначе?

ах, значит, дело в том, что мы использовали ограничение ^3.14.0-dev.0 для tslint, но с тех пор, как был выпущен 3.14.0 он удовлетворяет ограничению и снова удалил ослабленное ограничение peerDependency в машинописном тексте. это было намеренно? мы что-то здесь делаем не так?

@ Turbo87 Это было нежелательный побочный продукт того, как мы выпускаем релизы. Любой выпуск, заканчивающийся на -dev.x - это выпуск, предназначенный для работы с последними предварительными версиями TS, в частности с линией 2.x прямо сейчас.

Любая версия, отличная от -dev.x предназначена для работы с typescript@latest , которая в настоящее время - 1.8.10.

Если вы хотите полагаться на самые последние версии TSLint, которые идут с самыми последними версиями TS, я бы порекомендовал либо в зависимости от tslint@next либо одной конкретной версии TSLint.

@JKillian спасибо за разъяснения! поскольку одноранговые зависимости являются только информационными в NPM v3 и вызывают эти неожиданные проблемы в NPM v2, имеет ли смысл вместо этого заменить одноранговую зависимость примечанием о совместимости в файле README?

Хм, возможно, я неправильно понимаю, но разве ваша проблема не решается, просто изменив способ указания зависимости от TSLint? Я не решаюсь удалить peerDepedendency, потому что, будучи в основном информационным, он представляет правильные версии TS, для работы с которыми предназначен каждый пакет.

Разве ваша проблема не решима, просто изменив способ указания зависимости от TSLint?

да, закрепление зависимости решило бы проблему, но очевидно, что таким образом мы не получим никаких обновлений.

Я не решаюсь удалить peerDepedendency, потому что, будучи в основном информационным, он представляет правильные версии TS, для работы с которыми предназначен каждый пакет.

два комментария по этому поводу:

  • проблема в том, что на самом деле это не просто информация о NPM v2. если вы хотите, чтобы он был просто информационным, то вместо этого он должен быть в README. (альтернативой является принуждение пользователей к использованию NPM v3, но, поскольку NPM v2 был доставлен до Node 4, на самом деле это не лучший вариант)
  • вы сказали, что -dev предназначен для работы с TS-dev, а не-dev - нет, верно? но если non-dev основан на версиях dev, то почему бы non-dev не быть спроектирован для работы с TS-dev?

Я согласен с тем, что вы решите, это лучшее решение, я просто хочу это понять ... 😉

Мы могли бы даже пойти дальше и опубликовать в двух разных пакетах, но я чувствую, что это проблема сторонних библиотек, которые интегрируют TSLint, и пользователей.

вы сказали, что -dev предназначена для работы с TS-dev, а не-dev - нет, верно? но если non-dev основан на версиях dev, то почему бы non-dev не быть спроектирован для работы с TS-dev?

Что ж, две версии _ в основном_ одинаковы, но, возможно, они немного расходятся. Версии -dev содержат фрагменты кода, которые правильно обрабатывают новые языковые функции, и эти фрагменты кода не будут работать со старой версией TS. Этих фрагментов кода также нет в версиях, не предназначенных для разработчиков.

Меня беспокоит, что если peerDependency будет удален, люди останутся с несовместимыми версиями TS и TSLint и не будут знать, что происходит. Вещи в их нынешнем виде тоже не идеальны, как вы правильно заметили, поэтому я не уверен в лучшем решении.

Было бы хорошо, если бы @next всегда был новее, чем @latest . Может быть, это можно просто автоматизировать с помощью CI.

Это также вызывает сбой npm shrinkwrap с версией машинописного текста ^ 1.9.0-dev, требуемой @angular/compiler-cli и @angular/tsc-wrapped - ts 1.8.10 слишком мал для этих пакетов и 1.9.0-dev вызывает недопустимый одноранговый узел на tslint.

Изменить: 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

Не могу начать работать вместе с 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

Ошибка отображается вверху vscode: не удалось загрузить библиотеку tslint. Пожалуйста, установите tslint в свое рабочее пространство

Пытался установить tslint.enable: true | false (в пользовательском и рабочем пространстве) - не помогло.

$ npm --version
3.10.3

$ node --version
v6.4.0

Любой совет?

Я изменил свой package.json чтобы использовать следующее, и теперь он работает на Node v4 до v6:

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

Закрытие этой проблемы, поскольку это проблема NPM и находится вне нашего контроля

🤖 Бип-буп! 👉 TSLint устарел 👈 и вам следует перейти на typescript-eslint ! 🤖

🔒 Эта проблема заблокирована, чтобы предотвратить дальнейшие ненужные обсуждения. Спасибо! 👋

Была ли эта страница полезной?
0 / 5 - 0 рейтинги