Heroku + Rails + Angular =未知提供者:eProvider< - e

时间:2014-12-09 12:17:57

标签: ruby-on-rails angularjs heroku

感到完全莫名其妙。我知道有几个问题已经被问到这个问题,我已经阅读并重读了所有这些问题。

Angular(使用ng-route)工作直到某个提交(我将包含js文件差异的图像)。我已经改变了我本来期望成为有罪的一方,如图所示:

更改了此

app.run(function($rootScope, $http){
    $rootScope.logout = function(){
        $http({
            url: 'logout',
            method: 'GET'
        }).success(function(data){
            window.location = window.location.href;
        });
    };
});

到这个

app.run(['$rootScope', '$http', function($rootScope, $http){
    $rootScope.logout = function(){
        $http({
            url: 'logout',
            method: 'GET'
        }).success(function(data){
            window.location = window.location.href;
        });
    };
}]);

但是,即使我完全承诺上面的代码,错误仍然存​​在,所以我真的不认为是这样。我还用大块代码评论了大块,似乎没有解决这个问题。

我附加了一个显示提交文件中差异的图像。在此提交之前,angular在Heroku / production上工作正常。我只是愚蠢而没有看到它吗?

http://imgur.com/SwsEeuH,oITUoY7,bQ8HKrj,tZF4HMS

提前致谢!

2 个答案:

答案 0 :(得分:1)

当您使用破坏Angular依赖项的JavaScript minifier时会出现此类错误。因为Angular通过参数名称查找依赖关系,所以无法找到它们。

我不确定您将JavaScript用于缩小和合并的文件,但是您需要找到一种以Angular友好方式执行此操作的方法。我最近有一个项目使用ngmin grunt插件来缩小我的JavaScript并开始出现类似的错误,直到我切换到ng-annotate

答案 1 :(得分:1)

我猜这个问题有点太迟了,但我遇到了同样的问题,但只是在使用Angular Material时。我所有的依赖项都按照建议注入,在使用Material之前一切正常。

我的设置是在Heroku上的生产中运行的Rails 5应用程序上的Angular。即使遵循关于Angular的funciton注释的最佳实践,injectin Angular Material也不会在生产中工作,并且会抛出UnknownProvider错误,除非您将ngannotate-rails gem添加到项目中。

此gem可帮助在资源管道缩小JS文件并修复依赖注入之前正确注释角度文件。