2015-04-12 79 views
2

在使用Rails 4和AngularJS移植到生產服務器後,我遇到了錯誤:[$injector:modulerr] Failed to instantiate module EcoApp due to: Error: [$injector:unpr] Unknown provider: e。 在閱讀其他stackoverflow問題和角度文檔後,我想由於縮小而出現錯誤。不幸的是,我不知道角度足夠好,經過多次嘗試修復我的代碼,我決定在這裏尋求幫助。AngularJS + Rails:未知提供者:e

我的控制文件(在CoffeeScript中):

angular.module('EcoApp') 
.controller 'MyTripsCtrl', ($scope, $http) -> 

    $http.get('/mytrips.json').success((data, status, headers, config) -> 

    $scope.mytrips = data 

    return 

).error (data, status, headers, config) -> 

    # log error 

    return 

    return 


.controller 'NavbarIsActive', ($scope, $location) -> 

    $scope.isActive = (select_path) -> 

    select_path == $location.path() 



    return 


.controller 'NavbarIsActive2', [ 

    '$scope' 

    '$location' 

    ($scope, $location) -> 

    $scope.isActive = (select_path) -> 

     select_path == $location.path() 

    return 
] 

正如你所看到的,我試圖修復控制器NavbarIsActive,這在我看來是麻煩的原因,但沒有結果。任何幫助將非常感激!

+1

是否縮小了您的代碼?我在任何包含的控制器中都沒有提到'e'。如果你實際上是縮小你的代碼,你需要使用顯式的依賴格式,而不是讓Angular通過名字來推斷你的依賴關係。 –

+0

我想Rails在將服務器從開發改爲生產之後正在縮小我的代碼。 –

回答

3

是的,問題可能會縮小。如果minifier garbles你的代碼是:

.controller('Foobar', function (e) { .. }) 

然後角不必究竟需要注入什麼樣的任何信息。這就是爲什麼交替噴射存在語法錯誤,你需要到處使用:

.controller 'Foobar', ['$scope', '$location', ($scope, $location) -> 
    .. 
] 

您指定兩次,每次依賴性:一次作爲一個字符串,它不會得到精縮,且第二次爲任意變量名的實際功能簽名。

相關問題