Подтвердить что ты не робот

Неизвестная ошибка поставщика при развертывании приложения Rails/AngularJS для Heroku

У меня есть приложение Rails/AngularJS, которое отлично работает в локальной среде разработки. Однако, когда я развертываю это приложение в Heroku, AngularJS не работает, возвращается эта ошибка:

Unknown provider: eProvider <- e

Я немного научился, и, похоже, это связано с предварительной компиляцией и минимизацией активов, но я не знаю, что делать, чтобы решить эту проблему. Есть идеи? Спасибо!

Вот как выглядит контроллер:

function RemindersCtrl($scope, $http) {
  $http.get('/reminders.json').success(function(data) {
    $scope.reminders = data;
    console.log(data);
  });
}

И это код в представлении:

    %section.reminders
      %div{"ng-controller" => "RemindersCtrl"}
        %ul
          %li{"ng-repeat" => "reminder in reminders"}
            .title {{reminder.title}}

Обновление: я изменил контроллер на это, но с тем же результатом:

var RemindersCtrl = function($scope, $http) {
  $http.get('/reminders.json').success(function(data) {
    $scope.reminders = data;
    console.log(data);
  });
}
RemindersCtrl.$inject = ['$scope','$http'];
4b9b3361

Ответ 1

В соответствии с инструкцией AngularJS (http://docs.angularjs.org/tutorial/step_05) вы можете добавить это в контроллер, чтобы предотвратить проблемы с минимизацией:

function RemindersCtrl($scope, $http) {
  ...
}
RemindersCtrl.$inject = ['$scope', '$http'];

или вместо определения такой функции:

function RemindersCtrl($scope, $http) {
  ...
}

это должно быть сделано следующим образом:

var RemindersCtrl = ['$scope', '$http', function($scope, $http) {
  ...
}];

Ответ 2

Вероятно, вы определяете свой контроллер как FooController = function($http) {}, вы должны определить как FooController = ["$http", function($http){}]

Смотрите mroe здесь

Ответ 3

Команда

Angular (и вообще говоря) рекомендует не загрязнять глобальную сферу действия.

.controller method,

var myApp = angular.module('myApp',[]);

myApp.controller('GreetingCtrl', ['$scope', function($scope) {
  $scope.greeting = 'Hola!';
}]);

работал отлично для меня. Это описано в Angular Информация о документации контроллеров