Неизвестный провайдер: e при переносе приложения Angular / Rails в производство - PullRequest
0 голосов
/ 05 сентября 2018

Когда я запускаю приложение Rails 4 / Angular в производство, я получаю следующую ошибку:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:unpr] Unknown provider: e

Я должен отметить, что он отлично работает в разработке. Из того, что я могу сказать, это, скорее всего, связано с тем, что Rails минимизирует js в производстве. Решение, которое большинство людей использовали для решения этой проблемы, заключается в использовании альтернативного метода внедрения зависимостей в Angular, что я и делаю. Я дважды прошел через свое приложение, дважды проверив, правильно ли я ввел все необходимые зависимости.

Одна вещь, которую я не пробовал, - это использование функций стрелок вместо традиционных function(){} обозначений. Это стоит попробовать?

Я включу свой код app.js, чтобы вы могли видеть, как я работаю. У меня есть несколько контроллеров и фабрик, но я не думаю, что необходимо включать их в данный момент, если кто-то не считает, что я должен.

app.js

var app = angular.module('app', ['ui.router', 'restangular', 'Devise']);

app.config([
  "$httpProvider",
  function($httpProvider) {
    var token = $('meta[name=csrf-token]').attr('content');
    $httpProvider.defaults.headers.common['X-CSRF-Token'] = token;
    $httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache';
  }
]);

app.config([
  'RestangularProvider',
  function(RestangularProvider) {


    RestangularProvider.setRequestSuffix('.json');
    RestangularProvider.setDefaultHttpFields({"content-type": "application/json"});
  }
]);


app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){

  $urlRouterProvider.otherwise("/");

  $stateProvider
    .state("home", {
      url: "/",
      templateUrl: '/templates/home/index.html',
      controller: "HomeCtrl"
    })

    .state("providers", {
      url: "/providers",
      abstract: true,
      template: '<div ui-view></div>'
    })

    .state("providers.show", {
      url: "/:id",
      templateUrl: '/templates/providers/show.html',
      controller: "ProviderShowCtrl"

    })

    .state("procedures", {
      url: "/procedures",
      abstract: true,
      template: '<div ui-view></div>'
    })

    .state("procedures.show", {
      url: "/:id",
      templateUrl: '/templates/procedures/show.html',
      controller: "ProcedureShowCtrl"

    });

}]);

app.factory("_", ['$window', function($window){
  return $window._;
}]);

Вот мой файл application.js:

//= require jquery
//= require jquery_ujs

//= require angular
//= require angular-devise
//= require angular-ui-router.min.js
//= require underscore-min.js
//= require restangular.min.js

//= require_tree .

Спасибо за помощь.

1 Ответ

0 голосов
/ 12 сентября 2018

Я создал новый репозиторий и приложение к героку. Затем я скопировал и вставил все из исходного приложения в новое, и теперь все работает отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...