【问题标题】:AngularJS 'unknown provider' after minification (ng-strict-di being activated)缩小后的AngularJS'未知提供者'(ng-strict-di被激活)
【发布时间】:2018-04-26 16:00:48
【问题描述】:

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

我正在尝试切换到 Google 的 Closure Compiler,以便我可以缩小它并添加源映射,首先我使用以下选项:--compilation_level WHITESPACE_ONLY--formatting=pretty_print,并且我正在以相同的顺序传递文件我以前用 grunt 任务做过,所以我应该有一个类似于我以前得到的第一个输出。

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

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

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

因此,我认为闭包编译器应该像一个魅力一样工作......但不,当 Angular 尝试将我的第一个服务注入我的 app.run() 函数时,我正面临一个 Unknown Provider 错误。 (.config() 执行得很好,因为我在这里没有自定义依赖项以及 .run() 的三个第一个依赖项。确实是我个人实现的依赖项失败了。)

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2018-06-14
      相关资源
      最近更新 更多