Tslint: 未满足的对等依赖打字稿@>=1.6.2

创建于 2015-11-22  ·  43评论  ·  资料来源: palantir/tslint

我正在尝试安装 tslint 3.0.0,但它一直说“Unmet Peer Dependency typescript@>=1.6.2”

我怎样才能让它消失?

External Question

最有用的评论

npm v3.x 不会自动安装对等依赖项(它们在 1.x 和 2.x 中是自动安装的)。

您是否在tslint旁边安装了typescript tslint

更新

在此处粘贴“解决方案”,这样您就不必滚动查看:

这是一个 NPM 可用性错误。 唯一的解决方案是同时安装:

npm install -g tslint typescript

所有43条评论

npm v3.x 不会自动安装对等依赖项(它们在 1.x 和 2.x 中是自动安装的)。

您是否在tslint旁边安装了typescript tslint

更新

在此处粘贴“解决方案”,这样您就不必滚动查看:

这是一个 NPM 可用性错误。 唯一的解决方案是同时安装:

npm install -g tslint typescript

我在全局级别安装了 tslint 和 typescript。 当前打字稿版本 1.6.2

我也在尝试在 Windows 上执行此操作。

使用nodejs Brew 发行版在 OSX 上进行全新安装时遇到同样的问题。

这在我的 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.0peerDepedency列为:

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

这意味着如果您使用的是预发布版(或npm使用的任何术语)版本的 TypeScript,它会认为尚未满足对等依赖项:

$ 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"
  }

这对预发布版本非常满意。

同样,可以简单地忽略此警告。 但值得注意的是那些现在试图针对next版本的 TypeScript 安装3.0.0的人。

除非您很高兴在tslint主要版本中包含预发布对等依赖项选项? 这样做有什么害处吗?

@myitcv是的,我们考虑了一点......我更愿意将 tslint 稳定版本与打字稿的稳定版本联系起来,如果用户想要next功能,他们应该使用next两个库的分布

@adidahiya但这发生在当前稳定的打字稿版本中

@helios1138这只是一个错误,对吧? 尽管出现错误,您的tslint二进制文件是否有效? 你是在全球安装吗? 需要更多信息...

@helios1138 - 如果您在全球范围内安装两者,这可能是npm问题,如线程中的其他帖子所述。

@adidahiya明白了。 期待next分配tslint正在更新:+1:

@gclifford @helios1138你能在安装前尝试运行npm cache clean吗? 可能与这个问题有关: https :

我遇到了一些问题,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并重新全局安装,它会消失吗?

@阿迪达希亚
嗨,即使在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.

有点奇怪。 它要么是UNMET PEER DEPENDENCY要么是无关紧要的,见下文。

所以你必须在两个错误之间做出选择。 如果你真的不喜欢大写,你可以做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 和 typescript 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.

我在使用 TypeScript 1.8.7 的 Win 8 上遇到了同样的问题

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

npm WARN EPEERINVALID [email protected] 需要 typescript@>=1.7.3 但非
e 已安装。

只是插嘴说我在 OSX 上有同样的问题,node v5.7.0 和 npm 3.6.0

我在使用 npm 3.7.3 的 OS X 上遇到了同样的问题

我认为这是一个 NPM 可用性错误,唯一的解决方案是同时安装对等点: npm install -g tslint typescript

相关: https :

同时安装它们似乎有效,没有警告消息! 谢谢@adidahiya

关于这个的更新,我有这个问题,打字稿版本 1.8.10。
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

@adidahiya由于对等依赖关系失败,tslint 目前似乎无法与 NPM 2 上的 typescript 2.1.0-dev 版本一起安装(请参阅 #1401)。 除了强制 TravisCI(和我们的开发人员)对较旧的 Node 版本使用 NPM 3 之外,还有其他解决方法吗?

@Turbo87嗯,你确定吗? 这一行似乎表明 2.1.0-dev 可以工作: https :

啊,所以问题是我们一直在为 tslint 使用^3.14.0-dev.0约束,但是自从3.14.0被释放它满足约束并再次删除了打字稿上的宽松 peerDependency 约束。 那是故意的吗? 我们在这里做错了吗?

@Turbo87这是有意为之,尽管它是我们发布方式的不幸副产品。 任何以-dev.x结尾的版本都是旨在与 TS 的最新预发布版本一起使用的版本,特别是现在的 2.x 系列。

任何非-dev.x版本都旨在与typescript@latest ,目前是 1.8.10。

如果您想依赖与最新版本的 TS 一起使用的最新版本的 TSLint,我建议您要么依赖于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 一起使用,而 non-dev 不是,对吗? 但是如果非开发版基于开发版,那么为什么非开发版也不能设计为与 TS-dev 一起使用呢?

无论您认为最好的解决方案是什么,我都可以接受,我只是想了解它......😉

我们甚至可以在两个不同的包中发布,但我觉得这对于集成 TSLint 的第三方库和用户来说是一种痛苦。

你说 -dev 旨在与 TS-dev 一起使用,而非 dev 不是,对吗? 但是如果非开发版基于开发版,那么为什么非开发版也不能设计为与 TS-dev 一起使用呢?

嗯,这两个版本_大部分_相同,但它们可能有点不同。 -dev版本包含正确处理新语言功能的代码位,这些代码位不适用于旧版本的 TS。 这些代码位也不在非开发版本中。

我担心如果删除 peerDependency,人们最终会安装不兼容的 TS 和 TSLint 版本,并且不知道发生了什么。 尽管正如您正确指出的那样,现在的情况也不完美,因此我不确定最佳解决方案。

如果@next总是比@latest新,那就太好

这也会使npm shrinkwrap@angular/compiler-cli@angular/tsc-wrapped所需的打字稿版本 ^1.9.0-dev 崩溃 - 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顶部出现错误:Failed to load tslint library。 请在您的工作区安装 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 等级

相关问题

rajinder-yadav picture rajinder-yadav  ·  3评论

zewa666 picture zewa666  ·  3评论

denkomanceski picture denkomanceski  ·  3评论

ghost picture ghost  ·  3评论

mrand01 picture mrand01  ·  3评论