Cri*_*cia 5 constraints incompatibility dart dart-pub
我有一个非常奇怪的问题。我有一些依赖项,在添加新依赖项之前工作得很好,但是一旦我添加一个新依赖项(在这种特定情况下async_await),我Incompatible version constraints on analyzer在使用pub get. 奇怪的是:async_await这不是一个不兼容的约束!
Pub 失败,[1] 解决依赖关系...
分析器上不兼容的版本约束:
- Angular 1.0.0 取决于版本 >=0.15.0 <0.19.0
- di 3.3.1 取决于版本 >=0.15.0 <0.22 .0
- redstone_mapper 0.1.1 取决于版本 >=0.13.0 <0.14.0
如果约束仍然失败,为什么当我删除时不显示此错误async_await(另一个导入也发生同样的事情)?
更新
跑步pub upgrade又暴露了另一个问题
解决依赖关系...
分析器上不兼容的版本约束:
- Angular 1.0.0 取决于版本 >=0.15.0 <0.19.0
- async_await 0.0.0 取决于版本 >=0.22.4 <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
Run Code Online (Sandbox Code Playgroud)
只是没有一组依赖项能够满足所有版本约束。
我通过查明某些依赖项的版本来解决此类问题,以使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
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以强制包使用未经测试的依赖项,但这是解决该问题的唯一方法(除了更新依赖项本身以使用较新的版本之外,但这通常由其他人控制)。
Pub 的版本求解器正在对所有依赖项中的所有版本约束进行全局分析。不仅如此,依赖项的每个版本都有不同的约束。
\n\n这意味着约束失败可能是非局部的。不仅仅是因为async_await有限制才导致问题。可能是这样的:
async_await添加了一个约束foo。foo与其他版本不同的版本。foo。实际上,我们最近看到的大多数此类错误似乎都将分析器包作为其关键。分析人员非常频繁地修改该软件包(或者至少有一段时间)并经常更改其次要版本。这意味着有很多软件包依赖于不相交的分析器版本集。
\n\n就像 @G\xc3\xbcnter 所建议的那样,解决方法是覆盖几个依赖项,这样可能会导致其自身的问题。(它基本上将“pub get time”故障转变为可能的运行时故障。)
\n