2014-05-07 4 views
2

$ Je reçois l'erreur bien documenté ci-dessous en essayant d'exécuter une application angularjs par Karma:AngularJS avec Karma fournisseur inconnu: routeProvider

[$injector:unpr] Unknown provider: $routeProvider 

La JS est générée à partir ClojureScrpit à l'aide purnam. Mais en regardant le produit JS, il semble ok:

var news = {app:{}}; 
news.app.newsApp = angular.module("newsApp", ["ngRoute"]); 
angular.module("newsApp").config(["$routeProvider", function(a) { 
    a.when("/", {templateUrl:"views/main.html", controller:"MainCtrl"}); 
    a.otherwise({redirectTo:"/"}); 
    return a; 
}]); 

donc je passe dans « ngRoute », qui semble être la cause commune. Mon karma.conf.js comprend route angulaire:

files: [ 
    'app/bower_components/angular/angular.js', 
    'app/bower_components/angular-mocks/angular-mocks.js', 
    'app/bower_components/angular-resource/angular-resource.js', 
    'app/bower_components/angular-cookies/angular-cookies.js', 
    'app/bower_components/angular-sanitize/angular-sanitize.js', 
    'app/bower_components/angular-route/angular-route.js', 
    'app/scripts/*.js', 
    'app/scripts/**/*.js', 
    'test/mock/**/*.js', 
    'test/spec/**/*.js' 
], 

Et je vois le chargement de route angulaire au démarrage du karma. Toute aide serait grandement appréciée.

Répondre

0

Cela semble fonctionner à:

http://plnkr.co/edit/9xEZm0z22ab2YL6kL1fT?p=preview

var news = {app:{}}; 

news.app.newsApp = angular.module("newsApp", ["ngRoute"]); 

news.app.newsApp.config(["$routeProvider", function(a) { 
    a.when("/", {templateUrl:"views/main.html", controller:"MainCtrl"}) 
    a.otherwise({redirectTo:"/"}); 
    return a; 
}]); 
+0

En effet, il le fait. Il semble qu'il y ait eu un conflit dans le code généré par ClojureScript, dû à l'utilisation d'une version obsolète de purnam. Merci de votre aide – masseyis

0

Voici un autre essai!

angular.module('newsApp').config(['$configName', '$routeProvider', function newsAppConfig(config, $routeProvider) {}]); 

Hope this helps

+0

Le module est défini correctement sur la ligne au-dessus de votre modification proposée, puis référencé juste sur la ligne appelée 'config'. – Brocco

+0

Essayez $ route au lieu de $ routeProvider – felipekm

+0

Je viens d'essayer $ route, mais curieusement, j'ai la même erreur à propos de $ routeProvider. J'ai vérifié trois fois que le fichier source ne fait plus référence à $ routeProvider – masseyis

0

J'ai eu le même problème et cela a été ma solution. Comme vous pouvez le voir dans le fichier karma.conf.js, le tableau javascript nommé 'files []' inclut le dossier/test/mock/**/* js. Vous pouvez ajouter dans le dossier 'mock' un fichier appelé modules.js. Dans ce fichier, ajoutez la ligne suivante;

'use strict'; 
angular.mock.module('ngRoute', []); 

Ainsi la ligne angular.mock.module ('ngRoute', []); devrait faire l'affaire. ajouter plus de modules pour se moquer de ce fichier si nécessaire.

Questions connexes