我有一个像这样的pubspec.yaml文件:
name: My App
dependencies:
unittest: { sdk: unittest }
json_object:
git:
url: git://github.com/chrisbu/dartwatch-JsonObject.git
(我这里只是以JsonObject为例)
当我运行pub install
时,我收到此错误:
Package 'unittest' is depended on from both sources 'sdk' and 'hosted'
这是什么意思,我该如何解决?
答案 0 :(得分:10)
Pub,Dart包管理器,按名称识别包,以及它们来自哪里。如果pub检测到两个具有相同名称的包,但来自两个不同的来源,则会抛出一个错误,例如“包foo依赖于来自'sdk'和'托管'两个来源”
要解决此问题,您需要确保所有依赖项都引用具有相同源的相同包。
正确的解决方案是让每个包停止使用sdk
源,因为所有SDK包现在都在pub.dartlang.org中托管。
你应该改变:
dependencies:
unittest: { sdk: test }
进入这个:
dependencies:
unittest: any
any
表示“pub.dartlang.org的任何版本”
以下套餐现在位于pub,这是他们新的规范主页:
如果您使用上述任何一种套餐,请在pubspec.yaml文件中使用foo: any
代替{sdk: foo}
。
现在,您作为开发人员当然可以更新您自己的pubspec.yaml,但您可能无法控制第三方依赖项。我建议您通过电子邮件(可以从pub.dartlang.org获取)联系您的软件包的作者,要求他们更新为使用托管软件包,如unittest。
在http://news.dartlang.org/2012/12/sdk-packages-now-available-on-pub.html
了解详情