我有一个相当简单的Angular应用程序,可以在我的开发机上正常运行,但是在部署它后却出现此错误消息(在浏览器控制台中)失败:
Uncaught Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20%24http%20%3C-%20%24compile
除此之外,没有其他消息。页面首次加载时会发生这种情况。
我正在运行ASP.NET MVC5,Angular 1.2RC3,并通过git推送到Azure。
谷歌搜索还没有发现任何有趣的东西。
有什么建议?
编辑:
我正在使用TypeScript,并用该$inject变量定义依赖项,例如:
$inject
export class DashboardCtrl { public static $inject = [ '$scope', '$location', 'dashboardStorage' ]; constructor( private $scope: IDashboardScope, private $location: ng.ILocationService, private storage: IDashboardStorage) { } }
我认为应该(或打算)解决在最小化期间出现的可能导致此错误的局部变量重命名问题。
就是说,这显然与缩小过程有关,因为当我BundleTable.EnableOptimizations = true在开发机器上进行设置时,就可以复制它。
BundleTable.EnableOptimizations = true
如果您单击链接,它将告诉您该错误是由于$ injector无法解析您的依赖关系而导致的。当javascript最小化/丑化/无论您要对其进行生产时,这是angular的常见问题。
问题是当你有一个控制器的时候。
angular.module("MyApp").controller("MyCtrl", function($scope, $q) { // your code })
缩小更改$scope并$q变成随机变量,该变量不会告诉angular要注入什么。解决方案是这样声明您的依赖项:
$scope
$q
angular.module("MyApp") .controller("MyCtrl", ["$scope", "$q", function($scope, $q) { // your code }])
那应该解决您的问题。
重申一下,我所说的只是错误消息提供给您的链接。