Falha ao instanciar o módulo [$ injector: despr] Provedor desconhecido: $ routeProvider

216

Recebi esse erro ao atualizar do AngularJS 1.0.7 para 1.2.0rc1 .

Scotty.NET
fonte

Respostas:

404

O módulo ngRoute não faz mais parte do angular.jsarquivo principal . Se você continuar usando o $ routeProvider, precisará incluir angular-route.jsno seu HTML:

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

Referência da API

Você também precisa adicionar ngRoutecomo uma dependência ao seu aplicativo:

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

Se, em vez disso, você planeja usar angular-ui-routerou algo parecido, remova a $routeProvider dependência do seu módulo .config()e substitua-a pelo provedor de sua escolha (por exemplo $stateProvider). Você usaria a ui.routerdependência:

var app = angular.module('MyApp', ['ui.router', ...]);
Scotty.NET
fonte
2
Parece que o ui-routerprojeto pode ser uma alternativa mais flexível, se você está começando do zero ( github.com/angular-ui/ui-router )
gatoatigrado
2
@gatoatigrado - Acabei de perceber a idade da ui.statesintaxe quando atualizei meu aplicativo da angular-ui-router v0.0.1 para a v0.2.0 , o que significa que agora ele usa o ui.routernome. Peço desculpas por qualquer confusão causada.
Scotty.NET
3
Onde é o endereço da CDN angular-route.js?
Sahar Sany
@SaharSany - A documentação paraangular-route fornece o endereço da CDN, além de outras opções. No ui-routermomento, não há CDN que eu conheça.
Scotty.NET
3
ui-routernão parece estar em sua própria CDN, embora seja em cdnjs: cdnjs.com/libraries/angular-ui-router
Nick McCurdy
41

adicionando à resposta de scotty:

Opção 1: inclua isso no seu arquivo JS:

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

Opção 2: ou apenas use o URL para baixar ' angular-route.min.js ' para o seu local.

e então (qualquer que seja a opção escolhida), adicione este 'ngRoute' como dependência.

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

Felicidades!!!

mayankcpdixit
fonte
5
Desculpe, mas tenho que admitir que isso parece muito semelhante à resposta já fornecida?
27713 Scotty.NET
2
... em outros lugares, descobri que as pessoas não conseguem encontrar o link / URL para baixar ou consultar o 'angular-route.min.js'. Foi isso que dei na resposta e, sim, concordo com a dependência 'ngRoute' de que você falou, então acrescentei isso também em minha resposta.
mayankcpdixit
Estou mais do que um pouco cansado do inferno da biblioteca js. Certamente deve haver uma maneira melhor do que descobrir o módulo de pilha apropriado por módulo.
É assim que é feito @SamanthaAtkins. Se você souber o que é necessário, injete a dependência e inclua o arquivo JS se não tiver código para essa Dependência. Embora eu apreciasse uma maneira melhor se alguém sugerisse.
mayankcpdixit
3

No meu caso, foi porque o arquivo foi compactado com escopo errado. Use Array!

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

Sintaxe do café:

app.controller 'StoreController', Array '$http', ($http) ->
  ...
Lucia
fonte