Échec de l'instanciation du module [$ injector: impr] Fournisseur inconnu: $ routeProvider

216

J'ai reçu cette erreur lors de la mise à niveau d'AngularJS 1.0.7 vers 1.2.0rc1 .

Scotty.NET
la source

Réponses:

404

Le module ngRoute ne fait plus partie du angular.jsfichier core . Si vous continuez à utiliser $ routeProvider, vous devrez maintenant inclure angular-route.jsdans votre code HTML:

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

Référence API

Vous devez également ajouter ngRoutecomme dépendance pour votre application:

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

Si à la place vous envisagez d'utiliser angular-ui-routerou similaire, supprimez simplement la $routeProvider dépendance de votre module .config()et remplacez-la par le fournisseur de choix approprié (par exemple $stateProvider). Vous utiliseriez alors la ui.routerdépendance:

var app = angular.module('MyApp', ['ui.router', ...]);
Scotty.NET
la source
2
On dirait que le ui-routerprojet peut être une alternative plus flexible, si vous partez de zéro ( github.com/angular-ui/ui-router )
gatoatigrado
2
@gatoatigrado - Je viens de me rendre compte de l'âge de la ui.statesyntaxe lorsque j'ai mis à jour mon application de la angular-ui-router version0.0.1 à la version0.0.0 , ce qui signifie qu'elle utilise désormais le ui.routernom. Mes excuses pour toute confusion causée.
Scotty.NET
3
Où est l'adresse CDN angular-route.js?
Sahar Sany
@SaharSany - La documentation deangular-route donne l'adresse CDN ainsi que d'autres options. Quant à ui-routeril n'y a actuellement aucun CDN que je sache.
Scotty.NET
3
ui-routerne semble pas être sur son propre CDN, bien qu'il soit sur cdnjs: cdnjs.com/libraries/angular-ui-router
Nick McCurdy
41

ajoutant à la réponse de Scott:

Option 1: incluez-la dans votre fichier JS:

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

Option 2: ou utilisez simplement l'URL pour télécharger ' angular-route.min.js ' sur votre section locale.

puis (quelle que soit l'option que vous choisissez) ajoutez ce 'ngRoute' comme dépendance.

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

À votre santé!!!

mayankcpdixit
la source
5
Désolé mais je dois admettre que cela semble très similaire à la réponse déjà fournie ??
Scotty.NET
2
... à d'autres endroits, j'ai constaté que les gens ne pouvaient pas trouver le lien / l'URL à télécharger ou renvoyer le 'angular-route.min.js'. C'est ce que j'ai donné dans la réponse et oui, je suis d'accord avec la dépendance «ngRoute» dont vous avez parlé, alors j'ai ajouté cela aussi dans ma réponse.
mayankcpdixit
Je suis plus qu'un peu fatigué de l'enfer de la bibliothèque js. Il doit sûrement y avoir un meilleur moyen que de déterminer le module pile approprié par module.
Voici comment cela se fait @SamanthaAtkins, si vous savez ce qui est nécessaire, vous injectez la dépendance et incluez le fichier JS si vous n'avez pas de code pour cette dépendance. Bien que j'apprécierais une meilleure façon si quelqu'un le suggérait.
mayankcpdixit
3

Dans mon cas, c'est parce que le fichier a été minifié avec une mauvaise portée. Utilisez Array!

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

Syntaxe du café:

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