未知的提供程序:将Angular / Rails应用程序移至生产环境时使用e

时间:2018-09-05 17:01:31

标签: ruby-on-rails angularjs

当我将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 :(得分:0)

我创建了一个新的存储库和heroku应用。然后,我将所有内容复制并粘贴到原始应用程序中,再粘贴到新应用程序中,现在一切正常。