2017-10-05 42 views
0

嘗試添加一個簡單的工廠,並收到錯誤:

Error: [$injector:unpr] http://errors.angularjs.org/1.4.6/$injector/unpr?p0=subfactoryProvider%20%3C-%20subfactory%20%3C-%20authService%20%3C-%20AuthorizationInterceptor%20%3C-%20%24http%20%3C-%20%24templateRequest%20%3C-%20%24compile 

我添加了一個腳本標籤:

<script src="app/subfactory.js"></script> 

的subfactory被定義爲如下:

(function() { 
    //'use strict'; 

    angular 
     .module('app') 
     .factory('subfactory', subfactory); 

    function subfactory() { 

     var subValue = {}; 
     return { 
      set: set, 
      get: get 
     }; 

     function get() { 
      return subValue; 
     } 

     function set(value) { 
      subValue = value; 
     } 
    } 

}); 

它在authService使用:

(function() { 
    //'use strict'; 

    angular 
     .module('app') 
     .factory('authService', authService); 

    authService.$inject = ['subfactory']; 

    function authService(subfactory) { 

     // removed code for brevity 

     mgr.getUser().then(function (user) { 
      if (user) { 
       var idToken = user.id_token; 
       var dataIdToken = getDataFromToken(idToken); 
       subfactory.set(dataIdToken.sub); 
      } else { 
       //console.log("User not logged in"); 
      } 
     }); 

我也有AuthorizationInterceptor調用authService:

app.factory("AuthorizationInterceptor", ['$q', '$injector', '$rootScope', '$window', 'authService', function ($q, $injector, $rootScope, $window, authService) { 

請,我怎樣才能解決這個問題?

編輯:

<script src="app/app.js"></script> 
<script src="app/authService.js"></script> 
<script src="app/subfactory.js"></script> 

app.factory("AuthorizationInterceptor"...app.js

該錯誤消息被定義爲在F12控制檯的唯一消息。

+0

是什麼,你的定義是那些工廠,這是什麼',你所創建的'AuthorizationInterceptor app'變量的順序'在? –

+0

如果你看到這個錯誤,這意味着或者subfactory.js沒有被加載,或者在定義了'app'模塊的文件之前被加載(並且應該有另一個說明這個錯誤的錯誤)。 – estus

回答

1

無法將其添加爲評論。所以在這裏添加一個答案。您需要更改文件聲明的順序。在你的情況下,錯誤是因爲你在subfactory.js之前有authService.jsauthService.js搜索其依賴關係,但未找到它作爲subfactory.js尚未添加。

<script src="app/app.js"></script>// If it main file whre angular module is created 
<script src="app/subfactory.js"></script> 
<script src="app/authService.js"></script> 
+0

現在我得到 - '錯誤:[$ injector:nomod] http://errors.angularjs.org/1.4.6/$injector/nomod?p0 = app' - 那麼原始錯誤 –

+0

如果app.js是主文件whr角模塊被定義爲頂部 – Ved

2

嘗試翻轉你的宣言文件的順序喜歡如下:

// only define your module here 
<script src="app/app.js"></script> 

// define your factories 
<script src="app/subfactory.js"></script> 
<script src="app/authService.js"></script> 

// define your authorization factory here just like the previous two 
<script src="app/Authorization.js"></script> 
+0

現在我得到 - 錯誤:[$ injector:nomod] http://errors.angularjs.org/1.4.6/$injector/nomod?p0 = app' - 然後原來的錯誤 –

+0

更新了我的答案。 –

+0

謝謝,你還請大拇指嗎? –

相關問題