【发布时间】:2014-03-08 11:04:41
【问题描述】:
当我加载(通过 UglifyJS)我的 AngularJS 应用程序的缩小版本时,我在控制台中收到以下错误:
Unknown provider: aProvider <- a
现在,我意识到这是由于变量名修改造成的。未修改的版本工作得很好。但是,我确实想使用变量名修饰,因为它大大减小了我们的 JS 输出文件的大小。
出于这个原因,我们在构建过程中使用了ngmin,但它似乎并没有解决这个问题,尽管它过去对我们很有帮助。
所以,为了调试这个问题,我在 uglify grunt 任务中启用了源映射。它们生成得很好,Chrome 确实从服务器加载地图。然而,我仍然收到同样无用的错误消息,尽管我的印象是我现在应该看到提供者的原始名称。
我如何让 Chrome 使用源映射来告诉我这里的问题是哪个提供商,或者,我怎样才能以其他方式找到提供商?
【问题讨论】:
-
您可以尝试为每个 JS 源文件添加不同的 cmets(如果还没有的话),并使用 UglifyJS 的 preserveComments 选项:这会让您知道哪个文件包含不正确的代码。
-
你碰巧在使用装饰器吗?我发现 ngmin 在我过去使用它时似乎没有正确地重写装饰器,这会导致像你这样的错误。
-
@JBNizet:我喜欢这个想法,但是将该指令添加到选项中似乎没有任何效果。
-
@dherman:你能给我举个装饰器的例子吗?我不确定在这种情况下它们会是什么。
-
见github.com/gruntjs/grunt-contrib-uglify(如果你使用咕噜声)。选项的值应该是“all”。
标签: angularjs google-chrome uglifyjs source-maps