2012-12-08 10 views
9

Mam plik pubspec.yaml takiego:Co oznacza "unittest" pakietu z obu źródeł "SDK" i "hosted"?

name: My App 
dependencies: 
    unittest: { sdk: unittest } 
    json_object: 
    git: 
     url: git://github.com/chrisbu/dartwatch-JsonObject.git 

(Ja tylko używając JSONObject jako przykład tutaj)

Kiedy biegnę pub install otrzymuję ten błąd:

Package 'unittest' is depended on from both sources 'sdk' and 'hosted' 

Co to znaczy i jak mogę to rozwiązać?

Odpowiedz

10

Pub, menedżer pakietów strzałek, identyfikuje paczki o nazwie , a także skąd pochodzą. Jeśli pub wykryje dwa pakiety o tej samej nazwie, ale pochodzą z dwóch różnych źródeł, wyświetli komunikat o błędzie: "Pakiet foo jest zależny od obu źródeł" sdk "i" hostowanych ""

Aby rozwiązać ten problem, potrzebujesz aby zapewnić, że wszystkie zależności odnoszą się do tego samego pakietu z tym samym źródłem.

Właściwe rozwiązanie jest dla każdego pakietu, aby przestał używać źródeł sdk, ponieważ wszystkie pakiety SDK są teraz hostowane w pub.dartlang.org.

należy zmienić:

dependencies: 
    unittest: { sdk: test } 

do tego:

dependencies: 
    unittest: any 

The any oznacza "Każda wersja z pub.dartlang.org"

Następujące pakiety są teraz w pubie, ich nowy dom kanoniczny:

  • args
  • http
  • Intl
  • rejestrowanie
  • meta
  • OAuth2
  • unittest
  • webdriver

Jeśli używasz któregokolwiek z powyższych pakietów, należy użyć foo: any zamiast z {sdk: foo} w pliku pubspec.yaml.

Teraz, jako programista, możesz zaktualizować swój własny plik pubspec.yaml, ale możesz nie być w stanie kontrolować zależności z innymi firmami. Zalecam, abyś skontaktował się z autorem Twojego paczki za pośrednictwem poczty elektronicznej (którą możesz pobrać z pub.dartlang.org), prosząc ich o aktualizację do hostowanych pakietów, takich jak unittest.

Zobacz więcej na http://news.dartlang.org/2012/12/sdk-packages-now-available-on-pub.html