我有一个相当简单的 Angular 应用程序,它在我的开发计算机上运行得很好,但在部署它后失败并显示此错误消息(在浏览器控制台中):
未捕获错误:[$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20% 24http%20%3C-%20%24编译
除此之外没有其他消息。它发生在页面首次加载时。
我正在运行 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) {
}
}
我相信应该(或旨在)解决缩小过程中出现的局部变量重命名问题,并可能导致此错误。
也就是说,它显然与缩小过程有关,因为当我在我的开发计算机上设置 BundleTable.EnableOptimizations = true
时,我可以重现它。
最佳答案
如果您点击链接,它会告诉您错误是由于 $injector 无法解析您的依赖项而导致的。当 javascript 被缩小/丑化/无论你在生产中对其执行什么操作时,这是 Angular 的一个常见问题。
问题是当你有例如一个 Controller ;
angular.module("MyApp").controller("MyCtrl", function($scope, $q) {
// your code
})
缩小将 $scope
和 $q
更改为随机变量,不告诉 Angular 要注入(inject)什么。解决方案是像这样声明您的依赖项:
angular.module("MyApp")
.controller("MyCtrl", ["$scope", "$q", function($scope, $q) {
// your code
}])
这应该可以解决您的问题。
重申一下,我所说的一切都在错误消息提供给您的链接中。
关于angularjs - "Uncaught Error: [$injector:unpr]"部署后有 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19671962/