0

У меня есть два модуля в узле/экспресс-/ угловом приложении, порядке и пользователям. В модуле пользователя у меня очень простой сервис:AngularJS + NodeJS - Ошибка при вызове вложенной службы

angular.module('users').factory('UsersRest', ['$q', '$log', '$http', 
    function($q, $log, $http) { 

     var getUserInfo = function(userid) { 
      var deferred = $q.defer(); 
      $http.get('/proxy/rest/user/'+ userid). 
       success(function(data, status, headers, config) { 
        var userdetail = data; 
        deferred.resolve(userdetail); 
       }); 
      return deferred.promise; 
     }; 


     // public API 
     return { 
      getUserInfo: getUserInfo 
     }; 


    } 
]); 

Я бы хотел использовать эту услугу в своем модуле заказа. Поэтому, когда я зарегистрировать модуль заказа я использую

ApplicationConfiguration.registerModule('order', ['users']); 

и в другой службе в моем модуле заказа я называю его с помощью

angular.module('order').factory('OrderService', ['$q','$http','$log', 'UsersRest', 
    function($q,$http,$log, UsersRest) { 

     // stuff 

     var update = function(order_request){ 

      var userdetail = UsersRest.getUserInfo(window.user.id).then(function (data) { 
       $log.info('information about user retrieved.'); 
       return data; 
      }); 

      // some other stuff 

     }; 

     // Public API 
     return { 
      update: update 
     }; 
    } 
]); 

Но когда я пытаюсь это, я получаю следующее сообщение об ошибке:

Error: [$injector:unpr] Unknown provider: UsersRestProvider <- UsersRest <- OrderService 
http://errors.angularjs.org/1.4.3/$injector/unpr?p0=UsersRestProvider%20%3C-%20UsersRest%20%3C-<section data-ui-view="" class="ng-scope" data-ng-animate="1">rderService 
    at REGEX_STRING_REGEXP (http://localhost:3000/lib/angular/angular.js:68:12) 
    at http://localhost:3000/lib/angular/angular.js:4262:19 
    at Object.getService [as get] (http://localhost:3000/lib/angular/angular.js:4409:39) 
    at http://localhost:3000/lib/angular/angular.js:4267:45 
    at getService (http://localhost:3000/lib/angular/angular.js:4409:39) 
    at Object.invoke (http://localhost:3000/lib/angular/angular.js:4441:13) 
    at Object.enforcedReturnValue [as $get] (http://localhost:3000/lib/angular/angular.js:4303:37) 
    at Object.invoke (http://localhost:3000/lib/angular/angular.js:4450:17) 
    at http://localhost:3000/lib/angular/angular.js:4268:37 
    at getService (http://localhost:3000/lib/angular/angular.js:4409:39) 

В чем дело? Является ли проблема инъекций?

EDIT Вот как зарегистрировать модуль пользователей:

ApplicationConfiguration.registerModule('users',['tmh.dynamicLocale']); 
+0

Эта ошибка подразумевает, что «OrderService» не знает, что такое «ПользователиRest», убедитесь, что модули правильно зарегистрированы/созданы. – Manatax

+0

Просьба включить регистрацию модуля пользователей. – Manatax

+1

Не уверен в настройке вашего файла, но если эти заводы находятся в отдельных файлах, они включены в ваш index.html? –

ответ

0

попробовать:

angular.module('order').factory('OrderService', ['$q','$http','$log', 
    function($q,$http,$log, UsersRest) { 
... 
    } 

дают UsersRest только в функции в качестве параметра, а не в массиве слишком

+0

Я считаю, что сервис пользователя должен быть введен в порядке чтобы использовать его для самой функции. – Manatax

+0

, если он делает какие-либо минифиниции, тогда он будет получать ошибки, которые вам нужны «UsersRest» в массиве для минификатора. –

+0

@ChadWatkins вы правы, мне нужно поставить инъекцию даже в массив – dylaniato

0

Ответ был довольно прост. На самом деле, ворчание не распознало инъекцию. Просто Ctrl + C и grunt снова сделал трюк.

0

Попробуйте зарегистрировать модуль в this way:

angular.module('users',['tmh.dynamicLocale']); 
angular.module('order', ['users']); 

И убедитесь, что вы регистрируете свои модули, прежде чем использовать их.

Смежные вопросы