Неизвестный поставщик: $rootElementProvider <- $ rootElement <- $ расположение в angulartics.js

Я использую angulartics в своем проекте, но когда я добавляю зависимость к своему модулю, я получаю следующую ошибку:

Неизвестный поставщик: $rootElementProvider <- $ rootElement <- $ location.

Я подключил angulartics.js в html после angular.js

Он генерируется в.run:

код lib здесь: https://github.com/luisfarzati/angulartics/issues/203

$location это хороший объект, но $rootElementProvider а также $rootElement не определены.

Как решить эту проблему?

1 ответ

Недавно я получил эту же проблему, единственная причина, по которой я знаю, что это может произойти, это когда вы создаете инжектор angularjs вручную, который зависит от модуля, который внедряет $ location во время начальной загрузки, или когда вы пытаетесь самостоятельно получить $ location через это инжектор.

Эта проблема на самом деле не связана с самой библиотекой angulartics, а скорее с собственной службой angular $ location, которая имеет прямую зависимость от $ rootElement, элемента, который определяется во время начальной загрузки приложения, поэтому не существует до его запуска.

Есть один простой способ исправить это, если у вас есть эта проблема с angulartics, и это удалить angulartics как зависимость из вашего приложения и добавить его как зависимость метода resumeBootstrap, что позволяет нам добавлять больше зависимостей во время выполнения продолжая процесс начальной загрузки angular.

Например:

angular.module('myApp', [
  // array of dependencies without angulartics
]);
var preBootstrapInjector = angular.injector(['ng', 'myApp']);
var $rootScope = preBootstrapInjector.$get('$rootScope');
var myService = preBootstrapInjector.$get('myService');
myService.getDataFromServer()
  .then(doSomethingWithThatData)
  .then(resumeBootstrap);
    
function resumeBootstrap(){
  // Clean up the custom injector for garbage collection
  $rootScope.$destroy();
  
  // Resume Angular's bootstrap process
  $(document).ready(function() {
    angular.resumeBootstrap([
      // dependencies from modules that need $location
      'angulartics'
    ]);
  });
}

Ура!

Другие вопросы по тегам