【发布时间】:2014-05-05 19:49:31
【问题描述】:
我很难确定在我的 Angular 应用程序中有哪些方法会导致错误:
Uncaught Error: [$injector:unpr] Unknown provider: nProvider <- n
只有在 ASP.Net 捆绑和缩小 javascript 后才会发生这种情况。
我已确保所有控制器和任何其他 DI 都使用缩小安全方法,即我的控制器/服务等使用该方法:
appControllers.controller('myCtrl', ['$scope', function($scope){
//......
}]);
我已经检查了我们应用程序中的每个 JS 文件 - 有很多......并且找不到任何违反这种注入依赖项的方式的东西 - 尽管一定有一个地方......
有没有更好的方法来查明可能导致此错误的方法?
谢谢
【问题讨论】:
-
我的猜测是缩小器正在更改函数的参数名称。由于 DI 项是通过字符串注册的(未通过缩小修改),因此它们将不再匹配,因此 DI 失败。
-
是的,情况就是这样,尽管我的所有(我可以看到的)DI 都是使用安全的方式完成的。就是找不到那个不...
-
虽然不是解决办法;您可以包含非缩小版本的 Angular + 缩小自定义代码。这将允许您在报告的错误上设置断点并从那里回溯它(通过将奇怪的命名函数与您自己的函数进行逻辑比较)。
-
@MarvinSmit - 这就是我目前正在做的事情 - 我美化了我缩小的 JS 并试图追踪 - 几乎不可能(到目前为止)
-
我发现了我们的问题.. 我们有一个第 3 方指令 - github.com/durated/angular-scroll - 没有一个 DI 方法被编写为安全的缩小。调整它们,现在一切都很好。
标签: javascript angularjs