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 が同じ名前の 2 つのパッケージを検出したが、2 つの異なるソースからのものである場合、「パッケージ foo はソース 'sdk' と 'hosted' の両方に依存しています」のようなエラーをスローします。

これを解決するには、すべての依存関係が同じソースの同じパッケージを参照していることを確認する必要があります。

sdkすべての SDK パッケージが pub.dartlang.org でホストされるようになったため、適切な解決策は、すべてのパッケージでソースの使用を停止することです。

変更する必要があります:

dependencies:
  unittest: { sdk: test }

これに:

dependencies:
  unittest: any

は、any「pub.dartlang.org の任意のバージョン」を意味します。

次のパッケージは現在、新しい正規のホームである pub にあります。

  • 引数
  • http
  • 国際
  • ロギング
  • メタ
  • oauth2
  • 単体テスト
  • ウェブドライバー

上記のパッケージのいずれかを使用する場合は、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を参照してください。

于 2012-12-08T23:51:11.180 に答える