AngularJS 'unknown provider' 缩小后(ng-strict-di 被激活)

AngularJS 'unknown provider' after minification (ng-strict-di being activated)

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

我正在尝试切换到 Google 的 Closure 编译器,这样我就可以缩小它并添加源映射,开始时我正在使用以下选项:--compilation_level WHITESPACE_ONLY--formatting=pretty_print 并且我传递文件的顺序与之前执行 grunt 任务时的顺序相同,因此我的第一个输出应该与我之前得到的类似。

注意:感谢一些 sublime text 魔法和差异检查器,我已经能够检查我的两个最终生成的文件是否在完全相同的顺序中完全相同 controllers/services。

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

现在我所有的文件都可以缩小了。为了确保这一点,我什至在我的应用程序上声明了 ng-strict-di 并暂时切换回以前的连接系统。如果我故意在我的控制器名称中输入错字,它会完美运行但会失败。

因此我认为 Closure Compiler 应该像一个魅力一样工作......但是不,当 angular 尝试将我的第一个服务注入我的 app.run()函数。 (.config() 执行得很好,因为我这里没有自定义依赖项以及 .run() 的前三个依赖项。确实是我个人实现的依赖项失败了。)

有人遇到过类似的问题吗?知道是什么原因造成的吗?

好的...我发现闭包编译器导入文件的方式与我以前使用的 grunt 任务不同。

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

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