我正在尝试安装 tslint 3.0.0,但它一直说“Unmet Peer Dependency typescript@>=1.6.2”
我怎样才能让它消失?
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.0
将peerDepedency
列为:
"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 版本。
对此有两点评论:
-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 ! 🤖
🔒 此问题已被锁定,以防止进一步不必要的讨论。 谢谢! 👋
最有用的评论
npm v3.x 不会自动安装对等依赖项(它们在 1.x 和 2.x 中是自动安装的)。
您是否在
tslint
旁边安装了typescript
tslint
?更新
在此处粘贴“解决方案”,这样您就不必滚动查看:
这是一个 NPM 可用性错误。 唯一的解决方案是同时安装: