2015-10-30 162 views
3

我正在嘗試爲Google App Engine構建Dart應用程序,但Dart無法解析除0.0.1版本以外的任何appengine依賴項。這裏是我的pubspec.yaml:無法解析Dart App Engine依賴項

name: MyApp 
version: 0.0.1 
dependencies: 
    angular2: 2.0.0-alpha.44 
    browser: ^0.10.0 
    appengine: '>=0.3.0 < 0.4.0' 
transformers: 
- angular2: 
    entry_points: web/main.dart 

這是錯誤我得到:

Package appengine has no versions that match >=0.3.0 <0.4.0 derived from: 
- MyApp depends on version >=0.3.0 <0.4.0 

我試圖從https://pub.dartlang.org/packages/appengine/versions每AppEngine上的版本,但唯一可行的一個爲0.0.1

Downloading appengine 0.0.1... 
Got dependencies! 

我真的很喜歡使用比0.0.1更新的東西。有東西壞了還是我錯過了什麼?

*更新: 我跑在詳細模式下按岡特Zöchbauer的建議,這是輸出:

ERR : Package appengine has no versions that match >=0.0.2 <0.4.0 derived from: 
    | - MyApp depends on version >=0.0.2 <0.4.0 
FINE: Exception type: NoVersionException 
FINE: package:pub/src/entrypoint.dart 154  Entrypoint.acquireDependencies.<async> 
    | ===== asynchronous gap =========================== 
    | dart:async        _Completer.completeError 
    | package:pub/src/entrypoint.dart 199  Entrypoint.acquireDependencies.<async> 
    | ===== asynchronous gap =========================== 
    | dart:async        _Future.then 
    | package:pub/src/entrypoint.dart 152  Entrypoint.acquireDependencies.<async> 
    | ===== asynchronous gap =========================== 
    | dart:async        Future.Future.microtask 
    | package:pub/src/entrypoint.dart   Entrypoint.acquireDependencies 
    | package:pub/src/command/get.dart 30  GetCommand.run 
    | package:args/command_runner.dart 178  CommandRunner.runCommand.<fn> 
    | dart:async        Future.Future.sync 
    | package:args/command_runner.dart 131  CommandRunner.runCommand 
    | package:pub/src/command_runner.dart 130 PubCommandRunner.runCommand.<async>.<fn> 
    | dart:async        Future.Future.sync 
    | package:pub/src/utils.dart 103   captureErrors.<fn> 
    | package:stack_trace      Chain.capture 
    | package:pub/src/utils.dart 117   captureErrors 
    | package:pub/src/command_runner.dart 130 PubCommandRunner.runCommand.<async> 

我擴大的版本,包括0.0.2和0.4.0和失敗之間的任何東西。即使我可以從網上手動下載版本,它肯定會拋出無版本發現錯誤。

+0

我更新了我的答案。只需在'^'前加上你的angular2 dpendency版本就可以解決你的問題,除非你有特殊的理由阻止'* .45'版本。 –

回答

1

這是pub的已知問題。如果它不能解決一組匹配的依賴關係,它有時會打印誤導消息。

pub upgrade --verbose 

應該揭示更多的信息,使調查哪些依賴pub是無法找到的兼容版本。

衝突是protobuf包。
appengine0.3.2取決於protobuf0.5.0
angular22.0.0-alpha.44取決於protobuf0.4.2
angular22.0.0-alpha.45如果你改變你的角度關係到

angular2: ^2.0.0-alpha.44 

還取決於 protobuf 0.5.0

angular2: 2.0.0-alpha.45 

angular2: ^2.0.0-alpha 

酒館可以解決所有的依賴就好了。

+1

太棒了!這就像一個冠軍。謝謝! – Gremash