Я пытаюсь установить tslint 3.0.0, но он продолжает говорить "Unmet Peer Dependency typescript @> = 1.6.2"
Как мне заставить это уйти?
одноранговые зависимости не устанавливаются автоматически в 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, для работы с которыми предназначен каждый пакет.
два комментария по этому поводу:
-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 ! 🤖
🔒 Эта проблема заблокирована, чтобы предотвратить дальнейшие ненужные обсуждения. Спасибо! 👋
Самый полезный комментарий
одноранговые зависимости не устанавливаются автоматически в npm v3.x (они были автоматическими в 1.x и 2.x).
вы установили
typescript
вместе сtslint
?Обновлять
Вставьте здесь «решение», чтобы вам не пришлось прокручивать его, чтобы увидеть его:
Это ошибка юзабилити NPM. Единственное решение - установить одновременно: