Когда я запускаю приложение 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 .
Спасибо за помощь.