Angularjs调试[$ injector:unpr]未知提供者:e?

时间:2015-09-08 21:39:46

标签: angularjs

如何调试Angular的错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module zvApp due to:
Error: [$injector:unpr] Unknown provider: e
http://errors.angularjs.org/1.4.3/$injector/unpr?p0=e
    at http://app.dev/build/js/vendor-53eec796.js:3:19384

有一些提供商未知,但哪一个?我找不到如何调试它的简单方法。尝试了所有..认为它是第三方软件包中的错误,但无需调试就无法确定。

1 个答案:

答案 0 :(得分:16)

很可能你的问题是缺少explicit dependency annotation(除非 ng-annotate 与缩小一起使用),使用数组语法({{1构造函数上的 .service('myService', ['$http', function($http){...静态属性$inject)。在游戏后期或缩小的代码中很难找到它。因此,一般的做法是将 ng-strict-di MyService.$inject=['$q']指令一起使用,而在使用非缩小代码开发或运行应用程序时,它会在您缺少显式的地方引发更多信息错误依赖注释。

实施例: -

如果使用ng-app,那么

ng-app

如果手动引导,则将其指定为选项。

<html ng-app="myApp" ng-strict-di>

通过打开angular.bootstrap(document, ['myApp'], { strictDi: true }); 角度注入器将在实例化之前专门检查显式注释,并且缺少将错误地破坏应用程序,这通常有助于防止这些问题或在游戏的早期捕获它们。通常打开strict-di选项是有帮助的(并且不需要为生产btw删除它)在捕获缺少依赖注入几乎每个定义,包括运行,配置甚至解析函数(用于路由器,模态等)。 / p>