Tslint: Texto de tipo de dependência de par não atendida @> = 1.6.2

Criado em 22 nov. 2015  ·  43Comentários  ·  Fonte: palantir/tslint

Estou tentando instalar o tslint 3.0.0, mas ele continua dizendo "Unmet Peer Dependency typescript @> = 1.6.2"

Como faço para que isso desapareça?

External Question

Comentários muito úteis

as dependências de mesmo nível não são instaladas automaticamente pelo npm v3.x (eram automáticas no 1.xe 2.x).

você instalou typescript ao lado de tslint ?

Atualizar

Colando a "solução" aqui para que você não precise rolar para vê-la:

Este é um bug de usabilidade do NPM. A única solução é instalar simultaneamente:

npm install -g tslint typescript

Todos 43 comentários

as dependências de mesmo nível não são instaladas automaticamente pelo npm v3.x (eram automáticas no 1.xe 2.x).

você instalou typescript ao lado de tslint ?

Atualizar

Colando a "solução" aqui para que você não precise rolar para vê-la:

Este é um bug de usabilidade do NPM. A única solução é instalar simultaneamente:

npm install -g tslint typescript

Instalei o tslint e o typescript em nível global. Versão datilografada atual 1.6.2

Também estou tentando fazer isso no Windows.

Obtendo o mesmo problema na instalação limpa no OSX usando a distribuição Brew de nodejs .

Isso não parece acontecer na minha caixa CentOS.

Aqui está para reproduzir usando um prefixo personalizado (para não precisar explodir meus módulos existentes):

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

É apenas um aviso que é produzido aqui? Ou seu tslint global realmente não está funcionando se você tentar executá-lo? Isso pode ser um bug do NPM (aviso falso positivo deles).

Depois de brincar um pouco com ele, parece que tslint está funcionando bem. Pode ser um bug do NPM. Fornecerei mais informações após mais alguns testes.

também tendo o mesmo problema

@adidahiya, vale a pena notar que tslint v3.0.0 tem peerDepedency listado como:

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

o que significa que se você estiver usando uma versão de pré-lançamento (ou qualquer termo que npm usa) do TypeScript, ela considera que a dependência de pares não foi atendida:

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

No entanto, o branch next (que é um número de commits atrás de v3.0.0 ) tem o seguinte:

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

que está perfeitamente satisfeito com a versão de pré-lançamento.

Novamente, esse aviso pode ser simplesmente ignorado. Mas vale a pena notar para aquelas pessoas agora tentando instalar 3.0.0 contra uma versão next do TypeScript.

A menos que você esteja satisfeito com a inclusão das opções de dependência de pares de pré-lançamento nas versões principais de tslint ? Algum mal em fazer isso?

@myitcv sim, pensamos um pouco sobre isso ... Eu prefiro manter as versões estáveis ​​do tslint vinculadas às versões estáveis ​​do typescript, e se os usuários quiserem a funcionalidade next , eles devem usar a next distribuição de ambas as bibliotecas

@adidahiya, mas isso está acontecendo com a versão de

@ helios1138 é apenas um erro, certo? seu tslint binário funciona apesar do erro? você está instalando globalmente? preciso de mais algumas informações ...

@ helios1138 - se você estiver instalando ambos globalmente, este é provavelmente um problema de npm , conforme foi mencionado em outros posts no tópico.

@adidahiya entendido. Aguardamos a distribuição de next para tslint sendo atualizada: +1:

@gclifford @ helios1138 você pode tentar executar npm cache clean antes de instalar? Pode estar relacionado a este problema: https://github.com/npm/npm/issues/10365

Estou tendo alguns problemas com ele, o npm me dá esse aviso durante a instalação, não com gulp-tslint@latest , mas em ambos os casos ao tentar usá-lo, então mostra um erro como:

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)

Alguma idéia de como consertar mesmo depois de npm cache clean ?, Se eu instalar [email protected] que resolve para 3.6.0 funciona, então deve haver um problema com o repositório de gulp-tslint .

@Luchillo parece que você instalou apenas o gulp-tslint e não o tslint lá

Ele foi separado? por que com a v3.6.0 ainda funciona? tanto quanto eu entendo gulp-tslint é um invólucro para o pacote npm tslint, não é?

@Luchillo não, não é um wrapper, é um plugin gulp. o gulp-tslint mais recente tem tslint como uma dependência de par , portanto, o tslint não é instalado automaticamente. você precisa npm install ambos. https://nodejs.org/en/blog/npm/peer-dependencies/

Ah, como acabei de usar a v3.6.0 antes não sabia da mudança, mas deveria ser instalada em projeto local, global ou ambos?

Além disso, a dependência de par para [email protected] também diz não atendido, mesmo com o typescript instalado:

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 atualizou sua versão para 4.x, o que significa que há alterações significativas da 3.x.

quanto ao aviso de "dependência de par não atendida", é disso que trata o tópico acima - acho que é um bug do NPM. ele desaparece se você desinstalar, executar npm cache clean e instalar novamente globalmente?

@adidahiya
Olá, recebo o mesmo aviso, mesmo depois de npm cache clean
ambos são instalados globalmente.

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.

É estranho. É uma DEPENDÊNCIA DE PEER INCOMPLETA ou estranha , veja abaixo.

Portanto, você deve escolher entre dois erros. Se você realmente não gosta de capitalização, pode fazer npm install typescript ou mesmo npm install typescript --save-dev se quiser poupar esses capitais a futuros colegas. Mas optei por desinstalar novamente, já que as coisas geralmente estavam funcionando bem.

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

O mesmo problema aqui com Ubuntu e 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.

Só queria relatar o mesmo problema no Windows 10, nó 5.7.1, npm 3.5.3 e datilografado 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.

Tenho o mesmo problema no Win 8 com 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]
└── texto tipificado de DEPENDÊNCIA DE PEER UNMET @> = 1.7.3

npm WARN EPEERINVALID [email protected] requer um par de typescript @> = 1.7.3 mas não
e foi instalado.

Estou apenas entrando na conversa para dizer que tenho o mesmo problema no OSX com nó v5.7.0 e npm 3.6.0

Eu tenho o mesmo problema no OS X com npm 3.7.3

Acho que é um bug de usabilidade do NPM, a única solução sendo instalar os pares simultaneamente: npm install -g tslint typescript .

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

Instalá-los simultaneamente parece funcionar, nenhuma mensagem de aviso! obrigado @adidahiya

Uma atualização sobre isso, eu tenho esse problema, com o texto datilografado Versão 1.8.10.
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

@adidahiya , parece que o tslint atualmente não pode ser instalado junto com a versão do typescript 2.1.0-dev no NPM 2 devido à falha na dependência do peer (consulte # 1401). Existe uma solução alternativa para isso além de forçar o TravisCI (e nossos desenvolvedores) a usar o NPM 3 para versões mais antigas do Node?

@ Turbo87 hmm, tem certeza? Esta linha parece sugerir que 2.1.0-dev funcionaria: https://github.com/palantir/tslint/blob/next/package.json#L49. Você sabia que o NPM v2 está se saindo diferente aqui?

ah, então a questão é que estamos usando a restrição ^3.14.0-dev.0 para tslint, mas desde que 3.14.0 foi lançado, ela satisfaz a restrição e removeu a restrição peerDependency relaxada no texto digitado novamente. isso foi intencional? estamos fazendo algo errado aqui?

@ Turbo87 Foi intencional, embora seja um subproduto infeliz de como fazemos os lançamentos. Qualquer lançamento terminando em -dev.x é um lançamento projetado para funcionar com as versões de pré-lançamento mais recentes do TS, especificamente a linha 2.x agora.

Qualquer versão diferente de -dev.x é projetada para funcionar com typescript@latest , que atualmente é 1.8.10.

Se você quiser depender das versões mais recentes do TSLint que acompanham as versões mais recentes do TS, recomendo usar tslint@next ou uma única versão específica do TSLint.

@JKillian obrigado pelo esclarecimento! Como as dependências de pares são apenas informativas no NPM v3 e estão causando esses problemas inesperados no NPM v2, faria sentido substituir a dependência de pares por uma nota de compatibilidade no arquivo README?

Hmm, talvez eu não tenha entendido, mas seu problema não pode ser resolvido apenas mudando como você especifica a dependência do TSLint? Hesito em remover o peerDepedendency porque, embora seja principalmente informativo, ele representa as versões de TS corretas com as quais cada pacote foi projetado para funcionar.

o seu problema não pode ser resolvido apenas alterando como você especifica a dependência do TSLint?

sim, fixar a dependência resolveria o problema, mas obviamente não receberemos nenhuma atualização dessa forma.

Hesito em remover o peerDepedendency porque, embora seja principalmente informativo, ele representa as versões de TS corretas com as quais cada pacote foi projetado para funcionar.

dois comentários sobre isso:

  • o problema é que, na verdade, não é apenas informativo sobre o NPM v2. se você quiser que seja apenas informativo, deve estar no README. (a alternativa é forçar os usuários a usar o NPM v3, mas como o NPM v2 foi enviado até o Nó 4, essa não é realmente uma ótima opção)
  • você disse que -dev foi projetado para funcionar com TS-dev, enquanto o não-dev não é, correto? mas se não-dev é baseado nas versões dev, então por que não-dev seria projetado para funcionar com TS-dev também?

Eu estou bem com o que você decidir ser a melhor solução, eu só gostaria de entender ... 😉

Poderíamos até publicar em dois pacotes diferentes, mas acho que isso é uma dor para bibliotecas de terceiros que integram TSLint e para usuários.

você disse que -dev é projetado para funcionar com TS-dev, enquanto o non-dev não é, correto? mas se não-dev é baseado nas versões dev, então por que não-dev seria projetado para funcionar com TS-dev também?

Bem, as duas versões são _principalmente_ iguais, mas podem ser um pouco divergentes. As versões -dev contêm bits de código que manipulam os novos recursos de linguagem corretamente, e esses bits de código não funcionariam com uma versão anterior do TS. Esses bits de código também não estão nas versões não-dev.

Estou preocupado se o peerDependency for removido, as pessoas ficarão com versões incompatíveis de TS e TSLint instaladas e não saberão o que está acontecendo. As coisas como estão agora também não são perfeitas, como você corretamente apontou, então não tenho certeza da melhor solução.

Seria bom se @next fosse sempre mais recente do que @latest . Talvez isso só possa ser automatizado por CI.

Isso também trava npm shrinkwrap com o texto digitado versão ^ 1.9.0-dev exigido por @angular/compiler-cli e @angular/tsc-wrapped - ts 1.8.10 é muito baixo para esses pacotes e 1.9.0-dev causa um par inválido em tslint.

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

Não consigo começar a trabalhar em conjunto com o 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

O erro é exibido na parte superior do vscode: Falha ao carregar a biblioteca tslint. Instale o tslint em seu espaço de trabalho

Tentei definir "tslint.enable": true | false (no espaço do usuário e no espaço de trabalho) - não ajudou.

$ npm --version
3.10.3

$ node --version
v6.4.0

Algum conselho?

Mudei meu package.json para usar o seguinte e agora funciona no Node v4 até v6:

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

Encerrando este problema, pois é um problema do NPM e está fora de nosso controle

🤖 Beep boop! 👉 TSLint está obsoleto 👈 e você deve mudar para typescript-eslint ! 🤖

🔒 Este problema está sendo bloqueado para evitar novas discussões desnecessárias. Obrigada! 👋

Esta página foi útil?
0 / 5 - 0 avaliações