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