我有一个相当简单的Angular应用程序,在我的dev机器上运行正常,但是在部署它之后失败了这个错误消息(在浏览器控制台中):
未捕获错误:[$ injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider < - t < - $ http < - $ compile 除此之外没有其他消息。它发生在页面第一次加载时。 我运行ASP.NET MVC5,Angular 1.2RC3,并通过git推送到Azure。 谷歌没有打开任何有趣的东西。 有什么建议么? 编辑: 我使用TypeScript,并使用$ inject变量定义我的依赖关系,例如:
export class DashboardCtrl { public static $inject = [ '$scope','$location','dashboardStorage' ]; constructor( private $scope: IDashboardScope,private $location: ng.ILocationService,private storage: IDashboardStorage) { } }
我相信应该(或打算)绕过局部变量重命名在缩小过程中出现的问题,并可能导致此错误。
也就是说,它显然与缩小过程有关,当我在我的dev机器上设置BundleTable.EnableOptimizations = true时,我可以重现它。
如果你关注你的链接,它告诉你,$ injector的错误导致无法解决你的依赖。这是一个常见的问题与角度当javascript被缩微/丑陋/无论你在做什么生产。
问题是当您有控制器;
angular.module("MyApp").controller("MyCtrl",function($scope,$q) { // your code })
缩小将$ scope和$ q更改为随机变量,不会告诉angular要注入什么。解决方案是声明你的依赖如下:
angular.module("MyApp") .controller("MyCtrl",["$scope","$q",$q) { // your code }])
这应该解决你的问题。