AngularJS'未知提供商'缩小后(ng-strict-di被激活)

时间:2018-04-26 16:00:49

标签: angularjs minify google-closure-compiler dependency-resolver

我首先通过grunt-contrib-concat grunt任务连接所有js文件。有了这个,一切都很好(没有缩小)。

我尝试切换到Google的Closure Compiler,以便我可以缩小它并添加源地图,开始使用以下选项:--compilation_level WHITESPACE_ONLY和{{1}并且我按照与之前使用grunt任务相同的顺序传递文件,所以我应该有一个类似于我之前获得的第一个输出。

注意:感谢一些崇高的文本魔术和差异检查器,我已经能够检查我的两个最终生成的文件是否以完全相同的顺序获得了所有相同的控制器/服务。

我的所有控制器都没有使用注释语法(依赖关系在控制器之前被声明为字符串)所以我使用了ng-annotate和this script来解决这个问题。

现在我的所有文件都准备好进行缩小。为了确保这一点,我甚至在我的应用程序上声明了--formatting=pretty_print,并临时切换回以前的连接系统。如果我在控制器名称中粗略地输入拼写错误,它就会完美无缺。

因此,我认为Closure Compiler应该像魅力一样工作......但是,当我尝试在我的ng-strict-di内注入我的第一个服务时,我正面临Unknown Provider错误功能。 (app.run()执行得很好,因为我没有自定义依赖项以及.config()的三个第一依赖项。实际上我的personnaly实现了依赖项失败。)

有人已经面临过类似的问题吗?知道是什么原因造成的吗?

1 个答案:

答案 0 :(得分:1)

好的......我发现封闭编译器不会像我以前使用的grunt任务那样导入文件。

当使用符号src/js/controllers/**/*.js时,我想到它直接在我的控制器文件夹中导入文件,但它没有。

我肯定已经检查了这个,但我确实犯了一个错误,并将旧文件与旧文件进行比较而不是新文件;这就是为什么我认为在检查时我在文件中以相同的顺序获得所有依赖...