2014-05-07 75 views
2

我得到了充分证明错误下面试图通过噶运行Angular.js应用:

[$injector:unpr] Unknown provider: $routeProvider 

的JS实际上是从ClojureScrpit使用purnam产生。但看看生成的JS,它看起来不错:

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; 
}]); 

因此,我传递'ngRoute',这看起来是常见原因。我的karma.conf.js包括角度路由:

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' 
], 

我在业力启动中看到角路由加载。任何帮助将不胜感激。

回答

0

这似乎在工作:

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

确实如此。由于使用过时的purnam版本,看起来在生成的ClojureScript代码中存在一些冲突。谢谢你的帮助 – masseyis

0

这是另一个尝试!

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

希望这有助于

+0

该模块正在您的建议更改上方的行上正确定义,然后在调用'config'的行上引用。 – Brocco

+0

尝试$ route而不是$ routeProvider – felipekm

+0

我刚刚尝试过$ route,但奇怪的是,我得到了与$ routeProvider完全相同的错误。我有三重检查,源文件不再引用$ routeProvider – masseyis

0

我有同样的问题,这是我的解决方案。正如您在文件karma.conf.js中看到的,名为'files []'的javascript数组包含文件夹/ test/mock/**/* js。 您可以在文件夹'mock'中添加一个名为modules.js的文件。 在此文件中添加以下行;

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

所以行angular.mock.module('ngRoute',[]);应该做的伎俩。如有必要,添加更多模块以模拟此文件。