2014-05-07 107 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',[]);應該做的伎倆。如有必要,添加更多模塊以模擬此文件。