9

我有一个这样的 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'

这是什么意思,我该如何解决?

4

1 回答 1

10

Dart 包管理器 Pub 按名称以及它们的来源来识别包。如果 pub 检测到两个具有相同名称的包,但来自两个不同的来源,它将抛出一个错误,例如“Package foo isdependend on both sources 'sdk' and 'hosted'”

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

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

你应该改变:

dependencies:
  unittest: { sdk: test }

进入这个:

dependencies:
  unittest: any

意思是“来自 pub.dartlang.org的any任何版本”

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

  • 参数
  • http
  • 国际
  • 日志记录
  • oauth2
  • 单元测试
  • 网络驱动程序

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

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

在http://news.dartlang.org/2012/12/sdk-packages-now-available-on-pub.html查看更多信息

于 2012-12-08T23:51:11.180 回答