2015-01-29 33 views
1

매우 이상한 문제가 있습니다. 이전에 새로운 종속성을 추가하는 데 몇 가지 종속성이 있지만 새로운 (이 특정 사례에서는 async_await)을 추가하자마자 pub get을 사용할 때 Incompatible version constraints on analyzer 오류가 발생합니다. 궁금한 점은 : async_await은 호환되지 않는 제약이 아닙니다! Pub Error : 분석기의 호환되지 않는 버전 제약

Pub get failed, [1] Resolving dependencies... Incompatible version
constraints on analyzer:
- angular 1.0.0 depends on version >=0.15.0 <0.19.0
- di 3.3.1 depends on version >=0.15.0 <0.22.0
- redstone_mapper 0.1.1 depends on version >=0.13.0 <0.14.0

왜이 오류 쇼 I 제거하지 않습니다 async_await

는 제약이 여전히 실패 할 경우 (이 같은 일이 다른 가져 오기 일어)?

업데이트

pub upgrade을 실행하면 위치를 모든 버전의 제약 조건에 맞는 종속성 단지 정해진이 없습니다 또 다른 문제를

Resolving dependencies...
Incompatible version constraints on analyzer:
- angular 1.0.0 depends on version >=0.15.0 <0.19.0
- async_await 0.0.0 depends on version >=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 
+0

'pubspec.yaml'을 게시 할 수 있습니까 –

+0

@ GünterZöchbauer 편집을 참조하십시오. –

+0

제 답변에서'dependency_overrides'를 시도해 보았습니다. 그래도 오류가 발생합니까? –

답변

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 

당신은 그들이 테스트되지 않은 종속성을 사용하여 패키지를 강제로이 방법을 추가했지만, 그것은에 의존 자체를 업데이트 외에 (그것을 해결하는 유일한 방법 최신 버전을 사용하지만 일반적으로 다른 사용자가이를 제어합니다).

2

Pub 's version solver는 모든 의존성에서 모든 버전 제약 조건을 포괄적으로 분석합니다. 뿐만 아니라 각 버전에는 서로 다른 제약 조건이 있습니다.

이것은 제약 조건이 로컬이 아닌 오류 일 수 있음을 의미합니다. 단지 async_await에 문제가되는 제약 조건이있는 것은 아닙니다. 그것은 다음과 같을 수 있습니다 :

  • async_awaitfoo에 제한 조건을 추가합니다.
  • 그렇지 않으면 foo의 다른 버전을 사용해야합니다.
  • 그런 다음 foo에서 오는 다른 제한 조건 세트를 제공합니다.
  • 그런 다음 다른 종속성 버전의 일부를 수정합니다. 다음 다른 여러 제약으로 이어질
  • ...
  • 등등 ... 실제로

이 우리가 최근에 본 것 같은 대부분의 오류는 분석기 패키지를 갖고있는 것 같다 자신의 린치 핀. 이 애널라이저는 패키지를 정말로 빈번하게 (또는 적어도 잠시 동안은) 사용했고, 종종 마이너 버전을 변경합니다. 즉, 분석기 버전의 서로 다른 세트에 의존하는 많은 패키지가 있음을 의미합니다.

@ Günter와 마찬가지로, 해결 방법은 자체 문제를 일으킬 수있는 몇 가지 종속성을 재정의하는 것입니다. (기본적으로 "pub get time"실패가 가능한 런타임 오류로 바뀝니다.)