我有一个非常奇怪的问题。我之前添加新依赖项的依赖项工作得很好,但是只要我添加一个新的依赖项(在此特定情况下为async_await
),在使用Incompatible version constraints on analyzer
时出现pub get
错误。奇怪的是:async_await
不是一个不兼容的约束!
Pub get failed,[1] Resolving dependencies ...不兼容的版本
对分析仪的限制:
- 角度1.0.0取决于版本> = 0.15.0< 0.19.0
- di 3.3.1取决于版本&gt; = 0.15.0 <0.22.0
- redstone_mapper 0.1.1取决于版本&gt; = 0.13.0&lt; 0.14.0
如果约束仍然失败,为什么在删除async_await
(同样的事情发生在另一个导入中)时,这个错误没有显示?
更新
正在运行pub upgrade
会发现另一个问题
解决依赖关系......
分析仪的版本限制不兼容:
- 角度1.0.0取决于版本&gt; = 0.15.0&lt; 0.19.0
- async_await 0.0.0取决于版本&gt; = 0.22.4&lt; 0.23.0
Pubspec.yaml
name: aristadart
description: A sample web application
dependencies:
angular: 1.0.0
browser: any
di: any
fp: any
http: any
mongo_dart: any
redstone: any
redstone_mapper: any
redstone_mapper_mongo: any
shelf_static: any
transformers:
- redstone_mapper
- angular:
html_files:
- lib/components/login/login.html
- lib/components/login/nuevo_usuario.html
- lib/components/home/home.html
- lib/components/evento/evento.html
- lib/components/vista/vista.html
答案 0 :(得分:3)
所有版本约束都适用,没有一组依赖项
我通过精确定位某些依赖项的版本来解决这些问题,以使pub get
/ pub upgrade
的生活更轻松,并添加一些dependency_overrides
来强制解决一些差异。
逐个添加覆盖,直到不再发生错误。
在你的情况下,我必须添加相当多的覆盖
dependency_overrides:
analyzer: ^0.22.4
barback: ^0.15.2+2
code_transformers: ^0.2.3+2
di: ^3.3.3
route_hierarchical: ^0.6.1
通过这种方式,您可以强制包使用未经过测试的依赖项,但这是解决它的唯一方法(除了更新依赖项本身以使用更新的版本,但这通常由其他人控制)。
答案 1 :(得分:2)
Pub的版本解算器正在对所有依赖项中的所有版本约束进行全局分析。不仅如此,依赖项的每个版本都有不同的约束条件。
这意味着约束失败可以是非本地的。这不仅仅是async_await
有一个导致问题的约束。可能是:
async_await
在foo
上添加了约束。foo
。foo
的不同约束。在实践中,我们最近看到的大多数错误似乎都将分析器包作为他们的关键。分析人员经常(甚至至少做了一段时间)修改该包,并经常更改其次要版本。这意味着有很多软件包依赖于不相交的分析器版本集。
与@Günter建议一样,解决方法是覆盖几个依赖项,因此可能会导致自身问题。 (它基本上将“发布时间”故障变为可能的运行时故障。)