Package'unittest'取决于来自'sdk'和'hosting'的来源是什么意思?

Set*_*add 9 dart

我有一个像这样的pubspec.yaml文件:

name: My App
dependencies:
  unittest: { sdk: unittest }
  json_object:
    git:
      url: git://github.com/chrisbu/dartwatch-JsonObject.git
Run Code Online (Sandbox Code Playgroud)

(我这里只是以JsonObject为例)

当我运行时,pub install我收到此错误:

Package 'unittest' is depended on from both sources 'sdk' and 'hosted'
Run Code Online (Sandbox Code Playgroud)

这意味着什么,我该如何解决?

Set*_*add 10

Dart包管理器Pub按名称识别包以及它们来自何处.如果pub检测到两个具有相同名称的包,但是来自两个不同的源,则会抛出一个错误,例如"包foo依赖于来自'sdk'和'hosted'两个来源"

要解决此问题,您需要确保所有依赖项都引用具有相同源的相同包.

正确的解决方案是让每个包停止使用sdk源代码,因为所有SDK包现在都在pub.dartlang.org中托管.

你应该改变:

dependencies:
  unittest: { sdk: test }
Run Code Online (Sandbox Code Playgroud)

进入:

dependencies:
  unittest: any
Run Code Online (Sandbox Code Playgroud)

any意思是"从pub.dartlang.org任何版本"

以下软件包现在位于pub,他们新的规范主页:

  • ARGS
  • HTTP
  • 国际
  • 记录
  • 的oauth2
  • 单元测试
  • 的webdriver

如果您使用上述任何一个软件包,请使用foo: any而不是{sdk: foo}在pubspec.yaml文件中.

现在,您作为开发人员当然可以更新您自己的pubspec.yaml,但您可能无法控制您的第三方依赖项.我建议您通过电子邮件(可以从pub.dartlang.org获取)联系您的软件包的作者,要求他们更新为使用像unittest这样的托管软件包.

有关详细信息,请访问http://news.dartlang.org/2012/12/sdk-packages-now-available-on-pub.html