Nie można utworzyć instancji modułu [$ injector: unpr] Nieznany dostawca: $ routeProvider

216

Otrzymałem ten błąd po aktualizacji z AngularJS 1.0.7 do 1.2.0rc1 .

Scotty.NET
źródło

Odpowiedzi:

404

Moduł ngRoute nie jest już częścią angular.jspliku podstawowego . Jeśli nadal używasz $ routeProvider, musisz teraz dołączyć angular-route.jsdo swojego HTML:

<script src="angular.js">
<script src="angular-route.js">

Dokumentacja API

Musisz również dodać ngRoutejako zależność dla swojej aplikacji:

var app = angular.module('MyApp', ['ngRoute', ...]);

Jeśli zamiast tego planujesz używać angular-ui-routerlub tym podobne, po prostu usuń $routeProvider zależność z modułu .config()i zastąp ją odpowiednim wybranym dostawcą (np $stateProvider.). Następnie użyłbyś ui.routerzależności:

var app = angular.module('MyApp', ['ui.router', ...]);
Scotty.NET
źródło
2
Wygląda na to, że ui-routerprojekt może być bardziej elastyczną alternatywą, jeśli zaczynasz od zera ( github.com/angular-ui/ui-router )
gatoatigrado
2
@gatoatigrado - Właśnie zdałem sobie sprawę, ile lat ui.statemiała składnia, kiedy zaktualizowałem aplikację z wersji angular-ui-router v0.0.1 do wersji 0.2 , co oznacza, że ​​teraz używa tej ui.routernazwy. Przepraszam za wszelkie nieporozumienia.
Scotty.NET,
3
Gdzie jest adres CDN angular-route.js?
Sahar Sany,
@SaharSany - Dokumentacjaangular-route zawiera adres CDN, a także inne opcje. Jeśli chodzi o ui-routernie mam obecnie CDN, o którym wiem.
Scotty.NET,
3
ui-routerwydaje się, że nie ma własnego CDN, chociaż jest na cdnjs: cdnjs.com/libraries/angular-ui-router
Nick McCurdy
41

dodając do odpowiedzi Scotta:

Opcja 1: Dodaj to do pliku JS:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>

Opcja 2: lub po prostu użyj adresu URL, aby pobrać plik „ angular-route.min.js ” do lokalnego pliku .

a następnie (niezależnie od wybranej opcji) dodaj tę „ngRoute” jako zależność.

wyjaśnione: var app = angular.module('myapp', ['ngRoute']);

Twoje zdrowie!!!

mayankcpdixit
źródło
5
Przepraszam, ale muszę przyznać, że wydaje się to bardzo podobne do udzielonej już odpowiedzi?
Scotty.NET
2
... w innych miejscach zauważyłem, że ludzie nie są w stanie znaleźć linku / adresu URL do pobrania lub skierować „angular-route.min.js”. Tak dałem w odpowiedzi i tak. Zgadzam się na Zależność „ngRoute”, o której mówiłeś, więc dodałem to również w mojej odpowiedzi.
mayankcpdixit
Jestem więcej niż trochę zmęczony piekłem biblioteki js. Z pewnością musi być lepszy sposób niż wymyślenie odpowiedniego stosu moduł po module.
Tak to się robi @SamanthaAtkins, jeśli wiesz, co jest potrzebne, wstrzykujesz zależność i dołączasz plik JS, jeśli nie masz kodu dla tej zależności. Chociaż doceniłbym lepszy sposób, jeśli ktoś sugeruje.
mayankcpdixit
3

W moim przypadku było to spowodowane tym, że plik został zminimalizowany ze złym zakresem. Użyj tablicy!

app.controller('StoreController', ['$http', function($http) {
    ...
}]);

Składnia kawy:

app.controller 'StoreController', Array '$http', ($http) ->
  ...
Lucia
źródło